为什么该方法在 NetBeans 中给出编译错误
(有问题的错误 - 找到的类型不匹配单位:必需的 Array[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)
}
我知道如果有 if 子句 - 没有 else 子句 - 那么为什么我们会得到类型不匹配。
但是,我无法解决上述错误 - 除非我添加这一行
返回 x
错误没有发生,因为编译器认为如果 n <= 0 会发生什么
我尝试使用 n = 10 作为硬编码编写函数
想法?
最佳答案
您的 for
理解将被转换成类似的东西:
0.to(x.length - 1).foreach(i => x(i) = scala.util.Random.nextInt(i))
自
foreach
返回 ()
,你的结果for
领悟是()
,所以整个函数的结果是 ()
因为它是最后一个表达式。您需要改为返回数组 x:
for(i <- 0 to x.length-1)
x(i) = scala.util.Random.nextInt(n)
x
关于Scala - 发现类型不匹配的单元 : required Array[Int],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21556954/