通过Scala 2.8 Predef类,我发现有一种“本地”方法。尽管我可以说,它与Predef.identity相同,只是有“@inline”注释。它有什么用,为什么它在Predef中很重要(因此可以在Scala的任何地方使用)?
答案 0 :(得分:42)
此处讨论:http://www.scala-lang.org/node/3594
这个想法是为了避免程序员错误地将'悬空'本地块与对象/类/特征的模板混淆。
object test {
object a
{
val x = 1
}
object b
{ // oops, extra newline disassociates this block with the object b
val x = 1
}
}
test.a.x
//test.b.x // doesn't compile
如果程序员真的希望该块独立,可以使用locally
:
object test {
object a
{
val x = 1
}
object b
locally {
val x = 1
}
}
该线程还建议第一个代码会产生弃用警告。这还没有补充。