我有个小问题。假设我有一个叫做Pet的 class 。
Pet具有一个名称和噪音变量,其创建方式如下:

class Pet
{
    var name : String = ""
    var canMakeNoise : Bool = true
}

现在,当我调用初始化类来创建类时,比如说一只猫,我可以很容易地做到这一点:
var cat: Pet()
cat.name = "Garfield"
cat.canMakeNoise = false

这可以顺利进行,但是当尝试直接使用文字值将其传递时,如下所示:
let cat : Pet("Garfield",true)

要么
let cat : Pet(name:"Garfield",canMakeNoise:true)

我收到此错误:

Swift编译错误-调用中的额外参数

这是为什么?我该如何解决?提前致谢。

最佳答案

如果要向初始化程序添加参数,则需要指定一个新的init函数,而不要依赖默认函数。这是您在情况下的处理方式:

class Pet {
    var name : String = ""
    var canMakeNoise : Bool = true

    init( name : String, canMakeNoise : Bool ) {
       self.name = name
       self.canMakeNoise = canMakeNoise
    }
}

var kitty = Pet(name: "Cat", canMakeNoise: true)

关于ios - 创建和调用类初始化程序并传递文字值时,调用中的额外参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30060102/

10-11 14:54