在Swift中,如何根据类是声明为var还是let来实现不同的类?
在swift中,数组和字典类都有不同的实现,具体取决于您是将它们声明为变量还是常量。我的问题是,这种类型的功能可以在您定义的类上使用,还是保留给数组、字典?数组和字典的实现对于变量和常量没有区别——相反,在Swift中,如何根据类是声明为var还是let来实现不同的类?,swift,Swift,在swift中,数组和字典类都有不同的实现,具体取决于您是将它们声明为变量还是常量。我的问题是,这种类型的功能可以在您定义的类上使用,还是保留给数组、字典?数组和字典的实现对于变量和常量没有区别——相反,mutating方法(更改结构任何部分的值的方法)只能对变量调用(用var声明),但不能调用常量(用let声明) 也就是说: struct MyType { var name: String func capitalizedName() -> String {
mutating
方法(更改结构任何部分的值的方法)只能对变量调用(用var
声明),但不能调用常量(用let
声明)
也就是说:
struct MyType {
var name: String
func capitalizedName() -> String {
return name.capitalized()
}
mutating func setName(newName: String) {
self.name = newName
}
}
var myVariable = MyType(name: "Foo")
myVariable.setName("Bar")
println(myVariable.capitalizedName()) // print BAR
let myConstant = MyType(name: "Baz")
// not allowed by compiler:
// myConstant.setName("Nope!")
数组和字典的实现对于变量和常量没有什么不同——相反,
mutating
方法(更改结构任何部分的值的方法)只能对变量(用var
声明)调用,而不能对常量(用let
声明)调用
也就是说:
struct MyType {
var name: String
func capitalizedName() -> String {
return name.capitalized()
}
mutating func setName(newName: String) {
self.name = newName
}
}
var myVariable = MyType(name: "Foo")
myVariable.setName("Bar")
println(myVariable.capitalizedName()) // print BAR
let myConstant = MyType(name: "Baz")
// not allowed by compiler:
// myConstant.setName("Nope!")
您如何知道它们有不同的实现?另外,
mutating
是使方法在var
struct上可调用但不let
的关键字,您如何知道它们有不同的实现?另外,mutating
是使方法在var
struct上可调用但不let
的关键字nks我查到了突变这就是我要找的:)谢谢我查到了突变这就是我要找的:)