gpt4 book ai didi

Scala模式匹配元组: matching equal values in the tuple

转载 作者:行者123 更新时间:2023-12-01 13:42:14 24 4
gpt4 key购买 nike

我创建了一个函数来从帕斯卡三角形中检索给定值,并且我使用了 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 {
// ...
}

是否可以定义 caserowcolumn有相同的值(value)吗?

我尝试在 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; ... }

对于第二个,当你想匹配一个变量(而不是绑定(bind)和隐藏它)时,你可以使用反引号(`):
(1, 2) match { case (_, `row`) => 1; ... }

关于Scala模式匹配元组: matching equal values in the tuple,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39055030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com