所以说我有一些类似的列表
val l = List((1, "blue"), (5, "red"), (2, "green"))
然后我想过滤掉其中一个,我可以做类似的事情
val m = l.filter(item => {
val (n, s) = item // "unpack" the tuple here
n != 2
}
有什么方法可以直接将元组“解压”为 lambda 的参数,而不是使用这个中间 item
变量?
像下面这样的东西是理想的,但是 Eclipse 告诉我参数数量错误;预期=1
val m = l.filter( (n, s) => n != 2 )
任何帮助将不胜感激 - 使用 2.9.0.1
最佳答案
这是您能得到的最接近的结果:
val m = l.filter { case (n, s) => n != 2 }
它基本上是匿名 PartialFunction 内的模式匹配语法。 Function
对象和特征中还有 tupled
方法,但它们只是此模式匹配表达式的包装器。
关于Scala - lambda 参数可以匹配元组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7163676/