Что делает Predef.locally и чем он отличается от Predef.identity - PullRequest
35 голосов
/ 13 июля 2010

Просматривая класс Scala 2.8 Predef, я обнаружил, что существует метод «локально».Насколько я могу судить, это то же самое, что и Predef.identity, за исключением наличия аннотации "@inline".Для чего это нужно и почему достаточно важно быть в Predef (и, следовательно, его можно использовать в любом месте в Scala)?

1 Ответ

42 голосов
/ 14 июля 2010

Здесь обсуждается: 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
  }
}

Этот поток также предположил, что первый код выдаст предупреждение об устаревании. Это еще не было добавлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...