Соглашение об именовании констант Scala? - PullRequest
90 голосов
/ 17 марта 2012

Что такое соглашение об именовании для констант Scala? Краткий поиск в StackOverflow предлагает верхний регистр CamelCase (первая строка ниже), но я хотел проверить еще раз.

val ThisIsAConstant = 1.23
val THIS_IS_ANOTHER_CONSTANT = 1.55
val thisIsAThirdConstant = 1.94

Какой стиль Scala рекомендуется?

Ответы [ 3 ]

119 голосов
/ 17 марта 2012

Официально рекомендуемый стиль (и я имею в виду официально) - это первый стиль, верблюжий регистр с первой буквой - верхний регистр.Он четко изложен Одерским по программированию в Scala.

За стилем также следует стандартная библиотека, и он имеет некоторую поддержку в семантике языка: идентификаторы, начинающиеся с верхнего регистра, рассматриваются как константы при сопоставлении с образцом.*

(раздел 6.10, стр. 107 во втором издании)

40 голосов
/ 17 марта 2012

(Это дополнение к ответу Даниэля, но я публикую его в качестве ответа для подсветки и форматирования синтаксиса.)

Даниэль говорит о стиле использования начальной заглавной буквы:важный в языковой семантике более тонкий и важный, чем я изначально полагал, когда изучал Scala.

Рассмотрим следующий код:

object Case {
  val lowerConst = "lower"
  val UpperConst = "UPPER"

  def main(args: Array[String]) {
    for (i <- Seq(lowerConst, UpperConst, "should mismatch.").map(Option.apply)) {
      print("Input '%s' results in: ".format(i))
      i match {
        case Some(UpperConst) => println("UPPER!!!")
        case Some(lowerConst) => println("lower!")
        case _ => println("mismatch!")
      }
    }
  }
}

Наивно я ожидал бы, что достигнувсе дела в матче.Вместо этого он печатает:

Input 'Some(lower)' results in: lower!
Input 'Some(UPPER)' results in: UPPER!!!
Input 'Some(should mismatch.)' results in: lower!

То, что происходит, это то, что case Some(lowerConst) затеняет val lowerConst и создает локальную переменную с тем же именем, которая будет заполняться каждый раз, когда Some содержит строкуоценивается.

По общему признанию, есть способы обойти это, но самое простое - следовать руководству по стилю для постоянного именования.

Если вы не можете следовать соглашению об именовании, тогда как @Reggoodwin указывает в комментариях ниже, вы можете поставить имя переменной в галочках, например,

case Some(`lowerConst`) => println("lower!")
7 голосов
/ 13 октября 2013

Имена констант должны быть в верхнем верблюжьем регистре.То есть, если элемент является окончательным, неизменным и он принадлежит объекту пакета или объекту , его можно считать константой .... Методы, значения и имена переменных должны быть на нижедело верблюда

http://docs.scala -lang.org / style / naming-соглашения.html # значения-константы-переменные-методы

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