Ios 创建和调用类初始化器并传入文本值时调用中的额外参数
我在斯威夫特有个小问题。比如说我有一门课叫Pet。 Pet有一个名称和噪波变量,如下所示:Ios 创建和调用类初始化器并传入文本值时调用中的额外参数,ios,xcode,class,swift,variables,Ios,Xcode,Class,Swift,Variables,我在斯威夫特有个小问题。比如说我有一门课叫Pet。 Pet有一个名称和噪波变量,如下所示: class Pet { var name : String = "" var canMakeNoise : Bool = true } 现在,当我调用Initialize创建类(比如说一只猫)时,我可以很容易地这样做: var cat: Pet() cat.name = "Garfield" cat.canMakeNoise = false 但是,当尝试使用以下文字值直接传递时,这会很
class Pet
{
var name : String = ""
var canMakeNoise : Bool = true
}
现在,当我调用Initialize创建类(比如说一只猫)时,我可以很容易地这样做:
var cat: Pet()
cat.name = "Garfield"
cat.canMakeNoise = false
但是,当尝试使用以下文字值直接传递时,这会很顺利:
let cat : Pet("Garfield",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)
因为变量使用默认值,所以xCode不需要初始值设定项。因此,当您创建类的新实例时,它将是一个
Pet
,具有name=”“
和canMakeNoice=true
如果要更改这些默认值,则需要提供一个init方法(并且可以删除这些默认值) 我在这里提供了两个init方法。第一个参数包含两个参数:
var cat: Pet = Pet(name: "Kitten", canMakeNoise: true)
这将使用提供的名称和提供的canMakeNoise
创建一个Pet
如果需要,还可以提供一个
便利初始化
这是一个缩短的初始化。在这种情况下,您可以创建Pet
类的另一个实例
var dog: Pet = Pet(name: "Doggy")
正如您所见,我们在这里不提供
canMakeNoise
属性,因为便利初始值设定项为我们提供了该属性(并使用true
作为canMakeNoice
)谢谢。工作起来就像一个charmBy,为init方法提供一个默认参数canMakeNoise
事件可以避免convinience init方法swift类Pet{var name:String var canMakeNoise:Bool init(name:String,canMakeNoise:Bool=true){self.name=name self.canMakeNoise=canMakeNoise}}宠物(名字:“猪”)宠物(名字:“蝴蝶”,canMakeNoise:false)
var cat: Pet = Pet(name: "Kitten", canMakeNoise: true)
var dog: Pet = Pet(name: "Doggy")