我已经阅读了其他一些问题,例如Scala 中下划线的所有用途是什么?虽然我确定这个问题已经被问过了,但我无法解决所有其他 17000 个 Scala 问题。
Foreach 有奇怪的行为,并且Placeholder 没有用,但它似乎仍然是一个隐藏的功能:
scala> val is = (1 to 5) toList
is: List[Int] = List(1, 2, 3, 4, 5)
scala> is foreach { i => println("Hi.") ; Console println 2 * i }
Hi.
2
Hi.
4
Hi.
6
Hi.
8
Hi.
10
scala> is foreach { println("Hi.") ; Console println 2 * _ }
Hi.
2
4
6
8
10
有人可以解释一下区别吗?
如果您感到一阵热情,请尝试:
scala> is foreach { i => println("Hi!") ; Console println 2 * i }
java.lang.IllegalArgumentException: !") ; Console println 2 * i }: event not found
然后看到这个答案。 是的,这确实发生了。