Swift:无法通过方法传递数组

时间:2018-08-03 12:49:58

标签: arrays swift function methods

编辑,我根据一些建议对其进行了更改,但现在出现了不同的错误

我正在尝试编写一个读取数组的函数,如果元素数小于10,则它将继续向其中添加生成的值。

为此,我做了以下功能:

func arrayValueInputter(w : Array<Int>){

    var x = 0;

    repeat{

        x += 2;

        w.append(x);

    } while w.count < 10

    print(w);
}


arrayValueInputter([1, 3, 9, 10]);

print("End Here");

但是每次我运行它都会收到错误消息:

旧错误

error: extraneous argument label 'w:' in call
arrayValueInputter(w: [1, 3, 9, 10]);

旧错误

新错误

Untitled-2.swift:12:5: error: cannot use mutating member on immutable value: 
'w' is a 'let' constant
 w.append(x);
^
Untitled-2.swift:20:20: error: missing argument label 'w:' in call
arrayValueInputter(&arr);

新错误

我不知道自己缺少什么,或者我使用的循环错误。从那以后,我才开始学习敏捷。

1 个答案:

答案 0 :(得分:2)

两个问题:

  1. 该错误表明您必须省略参数标签w
  2. 另一个严重的问题是您不能将文字用作inout参数

var array = [1, 3, 9, 10]
arrayValueInputter(&array)

关于 新错误

再次遇到两个问题:

  1. 调用中缺少参数标签“ w:” 的意思是:当您删除下划线时,您必须使用参数标签。下划线表示该标签将被忽略。

    arrayValueInputter(w: [1, 3, 9, 10]);
    
  2. 不能在不可变值上使用突变成员表示:默认情况下,所有传递的参数均为常量(let。将值分配给具有相同名称的新本地 var

    func arrayValueInputter(w : Array<Int>){
        var w = w
        var x = 0
    ...
    

这是Swift:没有尾随的分号。