jav*_*dba 6 coding-style scala
我在这里问一个具体的问题(不是意见):是否有任何scala风格的指南推荐以下"案例o:"解决是否要避免(可选)使用大括号或是否有/无接受:
 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早就说过,为方法放置初始大括号可能会在同一行或下一行上发生 - 两者都可以接受.在这种情况下有这么明确的答案吗?
更新 @acjay下面提供的答案提供了样式指南的链接.里面是一个特定的模糊.
来自 http://docs.scala-lang.org/style/control-structures.html#curlybraces
case - 如果case表达式适合单行,则省略大括号.否则,为清晰起见使用花括号(即使解析器不需要它们).
mzh*_*ang 12
关于这个http://docs.scala-lang.org/style/control-structures.html#curly-braces的Scala样式指南似乎已经改变了,它说的是
case - 在case子句中总是省略大括号.
实际上,在IntelliJ中进行编辑时,它会提醒用户在case块周围不必要的括号.
因此,为了避免对用户造成进一步的混淆,请对接受的答案进行更正:)
在斯卡拉文档风格指南说:
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
}