我创建了一个从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
为当row
和column
具有相同的价值?
我尝试在中使用相同的变量名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] 删除。
我来说两句