Собраться или не собраться: оператор Case блок
Здесь я задаю конкретный вопрос (а не мнение): существует ли какая-либо рекомендация руководства по стилю scala для следующего " случая о:", касающаяся того, следует ли избегать (необязательного) использования фигурных скобок или если оба варианта с/без приемлемы:
def mycase(x : Int) = {
x match {
case 0 =>
println("zero")
println("blah zero")
case 1 =>
println("one")
}
Я изначально не был уверен, что это даже сработает (думал, что это может сделать провал): но он делает правильный Прорыв:
scala> mycase(0)
zero
blah zero
Я специально хочу знать, был ли канонический ответ на это (не "я предпочитаю" , и т.д.). Например, для java Sun давно заявила, что размещение начальной фигурной скобки для метода может произойти либо на той же, либо на следующей строке - и то, и другое приемлемо. есть ли такой ясный ответ в данном случае?
UPDATE Ответ, приведенный ниже @acjay, содержит ссылку на руководство по стилю. Внутри-специфическая реклама.
Из http://docs.scala-lang.org/style/control-structures.html#curlybraces
Case-опустить скобки, если выражение case помещается на одной линии. В противном случае используйте фигурные скобки для ясности (даже если они не являются требуется парсером).
3 ответа:
Руководство по стилю Scala об этом http://docs.scala-lang.org/style/control-structures.html#curly-braces кажется измененным, где говорится
Case - всегда опускайте фигурные скобки в предложениях case.
На самом деле, при редактировании в IntelliJ, он будет напоминать пользователю о ненужных скобках вокруг блока case.
Таким образом, чтобы избежать дальнейшего замешательства пользователей, пожалуйста, Внесите поправку в принятый ответ:)
Руководство по стилю документации Scala гласит:
Case-опустить фигурные скобки, если выражение case помещается в одну строку. В противном случае используйте фигурные скобки для ясности (даже если они не являются требуется парсером).
Поэтому правильный формат:
def mycase(x : Int) = x match { case 0 => { println("zero") println("blah zero") } case 1 => println("one") }
Отдельно от вопроса, но в соответствии с приведенным примером, раздел Объявления руководства по стилю упоминает предпочтительное форматирование для
match
как например:Методы, содержащие одно выражение соответствия, должны быть объявлены следующим образом:def sum(ls: List[Int]): Int = ls match { case hd :: tail => hd + sum(tail) case Nil => 0 }
В отношении той же / следующей строки для фигурной скобки руководство по стилю является явным и на этом:
Открывающие фигурные скобки ({) должны находиться на той же строке, что и объявление они представляют собой:
def foo = { ... }
Технически синтаксический анализатор Scala поддерживает нотацию в стиле GNU с открытие фигурных скобок в строке, следующей за объявлением. Тем не менее, парсер не очень предсказуем при работе с этим стилем из-за способ, в котором точка с запятой вывод осуществляется. Много головной боли будет сохранен, просто следуя конвенции фигурной скобки продемонстрировано выше.