scala - Predef.locally 有何作用,与 Predef.identity 有何不同

标签 scala

查看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/

相关文章:

scala - 使用 Play Json 将可选的 json 字段转换为选项?

scala - 烫伤:成对比较字符串?

scala - 将 Option[Any] 转换为 int

scala - 使用 Scala 创建一个简单的 Kafka Consumer

scala - "public"Scala 中的 val 构造函数参数

scala - 为什么关于抽象特征成员 val 初始化的微小变化结果会有所不同?

java - 当修改包含泛型的类不是一个选项时,如何修复可怕的类型不匹配 required _$1 ?

scala - 如何优化 Scala 递归函数的双重调用

Scala 配置 : Include another file.conf

scala - 'Array[Int]'在scala中隐式转换为 'Int => Int'的地方在哪里?