Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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
Java Scala嵌套表达式不接受参数_Java_Scala - Fatal编程技术网

Java Scala嵌套表达式不接受参数

Java Scala嵌套表达式不接受参数,java,scala,Java,Scala,团队 scala新手,逐步学习。在学习表达式块中的嵌套作用域时,在以下代码行中编写 object ExpressionTest extends App { val area = { val PI = 3.14 PI * 10 { val PI= 100 PI * 2 } } println(area) } 在运行时获取以下异常 Error:(9, 5) Int(10) does not take parameters I

团队

scala新手,逐步学习。在学习表达式块中的嵌套作用域时,在以下代码行中编写

object ExpressionTest extends App {


  val area = {
    val PI = 3.14
    PI * 10
    {
      val PI= 100
      PI * 2
    }
  }

  println(area)
}
在运行时获取以下异常

Error:(9, 5) Int(10) does not take parameters
I am using Intellji 

在Scala中,可以将函数参数指定为块。编译器认为您的内部块是前一行中
10
的一个参数

为了帮助编译器理解您的意思,您可以添加一个
在行尾:

 val area = {
    val PI = 3.14
    PI * 10;
    {
      val PI = 100
      PI * 2
    }
  }

在Scala中,可以将函数参数指定为块。编译器认为您的内部块是前一行中
10
的一个参数

为了帮助编译器理解您的意思,您可以添加一个
在行尾:

 val area = {
    val PI = 3.14
    PI * 10;
    {
      val PI = 100
      PI * 2
    }
  }

@krylog:添加之后;它工作得和预期的一样好。你能提供一个简单的例子说明它的意思吗?“可以将函数参数指定为块。”-位与函数编程混淆。例如,您可以编写
someList.foreach{x⇒ println(x)}
而不是
someList.foreach(x)⇒ println(x))
。这就是解析器认为您在案例中所做的。这使您可以编写看起来像内置控件结构的方法,即使它们是库方法。还有一个关于括号和大括号的综合答案。
PI*10
后面的空行比分号更惯用。@krylog:after adding;它工作得和预期的一样好。你能提供一个简单的例子说明它的意思吗?“可以将函数参数指定为块。”-位与函数编程混淆。例如,您可以编写
someList.foreach{x⇒ println(x)}
而不是
someList.foreach(x)⇒ println(x))
。这就是解析器认为您在案例中所做的。这使您可以编写看起来像内置控制结构的方法,即使它们是库方法。还有一个关于括号和大括号的综合答案。
PI*10
后面的空行比分号更惯用。