刚看到一种有趣的可能性,可以初始化Scala中的代码块,用于类似foreach或map这样的高阶函数:
(1 to 3) map {
val t = 5
i => i * 5
}
(1 to 3) foreach {
val line = Console.readLine
i => println(line)
}
这是一些文档记录的特性,还是我应该避免使用这种结构?我能想象,“初始化”块进入构造函数,闭包本身成为一个apply()方法?
感谢Pat的原始问题 (http://extrabright.com/blog/2010/07/10/scala-question-regarding-readline)
total *= i
,而不是引入一个名为counter
的第二个变量。 - Ken Bloom