Arrays 如何在scala中传递和返回数组

Arrays 如何在scala中传递和返回数组,arrays,scala,Arrays,Scala,我很抱歉这个问题是多么的基本,但是无论如何,这是我的第一个scala项目,我尝试做的只是将数组传递到函数中并返回函数。以下是我所拥有的: def main(args: Array[String]): Unit = { // 9999 == infinite there should be no reason // that for the scope of this assignment there // there should be a value any bigg

我很抱歉这个问题是多么的基本,但是无论如何,这是我的第一个scala项目,我尝试做的只是将数组传递到函数中并返回函数。以下是我所拥有的:

 def main(args: Array[String]): Unit = {
    // 9999 == infinite there should be no reason
    // that for the scope of this assignment there
    // there should be a value any bigger than this.
    var Nodes = 4;
    var infi = 9999;
    var pathTaken = Array(Nodes);
    var pathLens = Array(Nodes);
    var paths = Array(Nodes, Nodes);
    
    pathLens = lenInit(pathLens);
}

def pathLens(x : Array[4]): Unit = {
    x = (0, 0, 0, 0);
    return x;
} 

我知道这是非常基本和简单的,但我一直是一个C/python的家伙,我一直在互联网上搜索到这一点是徒劳的。请帮我指出正确的方向,非常感谢

假设您的意图是将函数称为列宁IT而不是pathLens

无论如何,要创建一个4个整数的数组(所有整数都设置为0),请使用array.fill:

Array.fill[Int](4)(0)
您实际上不需要init函数,并且可以推断类型,因此只需执行以下操作:

val pathLens = Array.fill(Nodes)(0)
更多信息请参见此答案

要将数组传递给函数,需要参数化数组的类型,例如:

def foo(x: Array[Int]) .........

你能做的最好的事情就是在尝试练习之前停下来试着学习一些基本的scala语法。我能为您推荐一些学习Scala的好资源吗

书籍:

视频教程:

交互式教程:


答案是OOT,但我认为在这种情况下,值得向这些资源发出信号。

首先一点:您似乎将单位指定为返回类型。您应该让编译器自行查找,以便删除:Unit部分或设置所需的正确类型。这是一个公平的观点,但在本任务中,我仍需要对数组使用函数。您可以帮助我了解如何传递数组吗?我如何在现有数组上使用.fill命令?我看到您在初始化数组时使用了它,但我如何使用它将数组重置回零?@itsMe re。如何将数组重置回零:不要。创建一个新的。在scala中,您几乎不需要改变现有结构。虽然数组是从java继承的返祖现象,实际上是可变的,但最好假装它们不是可变的。只要习惯使用不可变的结构。这就是scala的方式。另外,我支持Tonio Gela在另一个答案中给您的建议:对于您来说编写代码似乎为时过早。您应该首先学习一些基本语法。