查看Scala 2.8 Predef类,我发现有一个“本地”方法。据我所知,它与 Predef.identity 相同,除了具有“@inline”注释之外。它的用途是什么?为什么它在 Predef 中如此重要(因此可以在 Scala 中的任何地方使用)?
最佳答案
这里讨论:http://www.scala-lang.org/node/3594
这个想法是为了避免程序员将“悬空”本地 block 与对象/类/特征的模板混淆的错误。
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
如果程序员确实希望该 block 独立,则可以使用本地
:
object test {
object a
{
val x = 1
}
object b
locally {
val x = 1
}
}
该线程还表明第一个代码将产生弃用警告。尚未添加此内容。
关于scala - Predef.locally 有何作用,与 Predef.identity 有何不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3237727/