在初始化之前通过引用传递的变量p

Bre*_*uro 23 pass-by-reference swift

我有一个Human类,其功能可以接收任意数量的人,并确定某人是否比这些人中的任何人年长,然后返回一个他/她年龄大的人的数组.

func isOlderThan(people: Human...) -> [Human] {
    var p: [Human]

    for person in people {
        if age > person.age {
            p.append(person)
        }
    }
    return p
}
Run Code Online (Sandbox Code Playgroud)

然而在

p.append(person)
Run Code Online (Sandbox Code Playgroud)

我收到了错误

Variable p passed by reference before being initialized
Run Code Online (Sandbox Code Playgroud)

谁知道为什么会这样?谢谢!

Gri*_*mxn 56

你的p声明就是声明.你还没有初始化它.您需要将其更改为

var p = [Human]()
Run Code Online (Sandbox Code Playgroud)

或者,正如@MartinR指出的那样,

var p: [Human] = []
Run Code Online (Sandbox Code Playgroud)

还有其他等效构造,但重要的是你必须为声明的变量赋予一些东西(在这两种情况下,都是一个接受Human成员的空数组).

更新 为了完整性,您还可以使用:

var p: Array<Human> = []
Run Code Online (Sandbox Code Playgroud)

要么

var p = Array<Human>()
Run Code Online (Sandbox Code Playgroud)