Scala - lambda 参数可以匹配元组吗?

标签 scala

所以说我有一些类似的列表

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/

相关文章:

Scala 替代 pythons `with`

scala - 伴生对象可以扩展一些与伴生类不同的特征吗?

scala - 防止 sbt 发布自动聚合的根项目

scala - 如何在类级别为隐式参数提供默认值

scala - 如何在Scala中将此map/flatMap转换为for comprehension?

scala - "this"关键字如何在 Scala 辅助构造函数中使用和工作?

scala - 获取序列的长度是恒定时间操作吗?

scala - 使用 enableHiveSupport 创建临时 SparkSession

generics - 以通用方式操作 Scala 集合

scala - 一次带有文件上传extractRequestContext和案例类的Akka HTTP API服务?