object Test1 {
def main(args: Array[String]) {
val list = List("a", "b")
list map { x ? println(x) }
list map { case x ? println(x) }
val list2 = List(("aa", "11"))
list2 map {
case (key, value) ? println("key: "+key+", value: "+value)
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意最后一行,为什么case必须使用关键字,但list map { x ? println(x) }可以删除它吗?
tho*_*dge 14
你无法打破功能文字中的元组.这就是为什么你必须用case来匹配它们.另一种方法是使用tupled使你的函数适合两个参数:
import Function.tupled
list2 map tupled {
(key, value) => println("key: "+key+", value: "+value)
}
Run Code Online (Sandbox Code Playgroud)
{ case (key, value) => f }
Run Code Online (Sandbox Code Playgroud)
与...不是一回事
{ (key, value) => f }
Run Code Online (Sandbox Code Playgroud)
第一种是模式匹配,它将a Tuple2分解为其组件,将其值分配给key和value.在这种情况下,只传递一个参数(元组).{ x => println(x) }因为x分配了元组并println打印它而起作用.
第二个是一个函数,它接受两个参数,并且不进行模式匹配.由于map需要一个采用单个参数的函数,因此第二种情况不兼容map.
| 归档时间: |
|
| 查看次数: |
321 次 |
| 最近记录: |