Scala - 找不到类型不匹配单位:必需数组[Int]

Sum*_*Pal 2 types scala mismatch

为什么该方法在NetBeans中出现编译错误

(有问题的错误 - 类型不匹配发现单位:必需数组[Int])

  def createArray(n:Int):Array[Int] =
  {
      var x = new Array[Int](n)
      for(i <- 0 to x.length-1)
        x(i) = scala.util.Random.nextInt(n)
  }
Run Code Online (Sandbox Code Playgroud)

我知道如果有一个if子句 - 而且没有else子句 - 那么为什么我们得到类型不匹配.

但是,我无法解决上述错误 - 除非我添加此行

返回x

错误没有发生,因为编译器认为如果n <= 0会发生什么我尝试用n = 10编写函数作为硬编码

想法?

Lee*_*Lee 9

你的for理解将被转换成类似的东西:

0.to(x.length - 1).foreach(i => x(i) = scala.util.Random.nextInt(i))
Run Code Online (Sandbox Code Playgroud)

因为foreach返回(),你for理解的结果是(),所以整个函数的结果是()因为它是最后一个表达式.

您需要返回数组x:

for(i <- 0 to x.length-1)
        x(i) = scala.util.Random.nextInt(n)
x
Run Code Online (Sandbox Code Playgroud)