试图在这里处理模式匹配——来自 C++/Java 背景,这对我来说很陌生。
这个分支的重点是检查d
元组列表的每个成员[格式为(字符串,对象)。我想定义三种情况。
1)如果此函数中的计数器大于列表的大小(在另一个称为 acc 中定义),我不想返回任何内容(因为没有匹配) 2)如果key
输入中的给定匹配列表中的元组,我想返回它的值(或者,存储在 tuple._2 中的任何值)。3)如果没有匹配,并且还有更多列表要迭代,递增并继续。
我的代码如下:
def get(key:String):Option[Any] = {
var counter: Int = 0
val flag: Boolean = false
x match {
case (counter > acc) => None
case ((d(counter)._1) == key) => d(counter)._2
case _ => counter += 1
}
我的问题是,虽然第一种情况似乎编译正确,但第二种情况会引发错误:
:36: 错误:')' 预期但 '.' 成立。 case ((d(counter)._1) == key) => d(counter)._2
第三个也是:
scala> case _ => 计数器 += 1 :1: 错误:定义的非法开始
但我认为这是因为第二个不正确。我的第一个想法是我没有正确比较元组,但我似乎遵循了索引元组的语法,所以我很难过。谁能引导我朝着正确的方向前进?