scala中.map(...)和.map {...}之间的区别是什么
例如:
-
List(1, 2, 3).map(i=> i + 1) -
List(1, 2, 3).map {i => i + 1}
他们都得到相同的结果:List(2, 3, 4)
但是对于此示例List(1, 2).map { println("Hi"); _ + 1 }结果如下,为什么 '嗨' 只打印一次?
Hi
List[Int] = List(2, 3)
通常,您可以使用括号括起简单的函数参数:
l.map( x => x * 2 )
用大括号括起更复杂的代码块或部分函数,包括case模式匹配:
l.map{ x =>
val y = x * 2
y
}
l.map{
case x if x%2 == 0 => x * 2
case _ => 0
}
至于Hi仅打印一次的原因,List(1, 2).map{ println("Hi"); _ + 1 }与List(1, 2).map{ println("Hi"); x => x + 1 }没有区别。要在println次迭代中包含map:
List(1, 2).map{ x => println("Hi"); x + 1 }
// Hi
// Hi
// res1: List[Int] = List(2, 3)
故乡明

浙公网安备 33010602011771号