Scala模式与元组匹配:在元组中匹配相等的值

用户978080

我创建了一个从Pascal Triangle检索给定值的函数,并且使用了if语句。现在,我想重构该函数以使用模式匹配。

我的if基础函数如下所示:

def valueAt(row: Int, column: Int): Int = {
  // ...
  else if (row == column) 1 // last column
  // 
}

使用模式匹配的该函数的第二个版本具有以下签名:

def valueAt2(row: Int, column: Int): Int = (row, column) match {
  // ...
}

是否可以定义case为当rowcolumn具有相同的价值?

我尝试在中使用相同的变量名case,如下所示:

case (x, x) => 1 // last column

而且我也尝试使用列中的值row,如下所示:

case (_, row) => 1 // last column

但是它们不起作用。在第一种情况下,我遇到了编译错误;在第二种情况下,IDE表示我正在row从中隐藏变量match

这可能吗?

谢谢。

友人

对于第一个,请使用if防护:

(1, 2) match { case (x, y) if x == y => 1; ... }

对于第二个变量,当您要匹配变量(而不是对其进行绑定和阴影化)时,可以使用反引号(`):

(1, 2) match { case (_, `row`) => 1; ... }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Scala:元组中的模式匹配

来自分类Dev

Scala 模式与元组类型匹配

来自分类Dev

Haskell中元组的模式匹配相等

来自分类Dev

Haskell中元组的模式匹配相等

来自分类Dev

从模式匹配创建元组中的scala MatchError

来自分类Dev

Scala,在通用特征元组上进行模式匹配,检查类型是否相等

来自分类Dev

Scala,在通用特征元组上进行模式匹配,检查类型是否相等

来自分类Dev

“强制”内元组值的模式匹配?

来自分类Dev

是否可以在后卫中匹配布尔值元组,例如模式匹配?

来自分类Dev

Haskell模式匹配元组列表

来自分类Dev

用“ as”模式匹配元组元素

来自分类Dev

Scala-匹配选项的元组

来自分类Dev

模式匹配元组PHP中的值(正则表达式?)

来自分类Dev

在Swift中匹配模式元组时,如何解开Optional?

来自分类Dev

在Erlang(Elixir)中与记录作为元组的模式匹配

来自分类Dev

CollectionType过滤器:Swift编译错误:元组模式不能匹配非元组类型的值

来自分类Dev

F#模式与可选的元组列表匹配

来自分类Dev

与元组进行模式匹配时的语法(Elixir)

来自分类Dev

如何使用|>并正确模式匹配元组输入?

来自分类Dev

Scala:匹配的元组:无法访问的代码

来自分类Dev

Scala:匹配的元组:无法访问的代码

来自分类Dev

将元组与多个可能的值匹配

来自分类Dev

在某些情况下,带有选项的元组的 Scala 模式匹配仍然需要展开

来自分类Dev

Erlang列表元组匹配

来自分类Dev

匹配Rust中的字符串元组

来自分类Dev

python中的部分匹配字典键(元组)

来自分类Dev

匹配元组中的字符串-python

来自分类Dev

元组匹配与Python中的变量赋值

来自分类Dev

匹配元组中的字符串-python

Related 相关文章

热门标签

归档