Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在scala中省略多行的大括号_Scala - Fatal编程技术网

在scala中省略多行的大括号

在scala中省略多行的大括号,scala,Scala,我见过一些scala代码示例,其中多行代码用作没有大括号的代码块,例如: x match { case a:Int => val b = 1 val c = b +3 println("hello!") c case _ => 5 } 与使用以下形式的隐式参数的某些非常长的函数相同: a.map { implicit x => // many, many complex lines of code } 与之相反: a.map {

我见过一些scala代码示例,其中多行代码用作没有大括号的代码块,例如:

x match {
  case a:Int =>
    val b = 1
    val c = b +3
    println("hello!")
    c
  case _ => 5
}
与使用以下形式的隐式参数的某些非常长的函数相同:

a.map { implicit x =>
  // many, many complex lines of code
}
与之相反:

a.map { implicit x => {
  // many, many complex lines of code
}}

我已经看到很多文档/常见问题解答指出,多行代码应该总是用大括号括起来,但是找不到对这些异常的解释。我很想理解或者有一个好的直觉,这样我就不会觉得这有魔力了。

在case语句中,body虽然看起来像块,但实际上是函数文本的表达式部分,遵循
arg=>expr
的形式。由于
case
语句被另一个
case
语句或
case
块的结束方括号终止,函数文本的边界是隐式定义的,表达式不需要自己的块分隔符

您介意指向您正在引用的文档吗?函数文本的答案:您的答案很好,我找到了我的答案。然而,由于这是一个重要的问题,初学者和许多其他人也可能会看看它。你能纠正一下答案中的一些错误吗?谢谢