Predef.locally做了什么,它与Predef.identity有什么不同

时间:2010-07-13 13:39:51

标签: scala

通过Scala 2.8 Predef类,我发现有一种“本地”方法。尽管我可以说,它与Predef.identity相同,只是有“@inline”注释。它有什么用,为什么它在Predef中很重要(因此可以在Scala的任何地方使用)?

1 个答案:

答案 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
  }
}

该线程还建议第一个代码会产生弃用警告。这还没有补充。