在Swift中,如何根据类是声明为var还是let来实现不同的类?

在Swift中,如何根据类是声明为var还是let来实现不同的类?,swift,Swift,在swift中,数组和字典类都有不同的实现,具体取决于您是将它们声明为变量还是常量。我的问题是,这种类型的功能可以在您定义的类上使用,还是保留给数组、字典?数组和字典的实现对于变量和常量没有区别——相反,mutating方法(更改结构任何部分的值的方法)只能对变量调用(用var声明),但不能调用常量(用let声明) 也就是说: struct MyType { var name: String func capitalizedName() -> String {

在swift中,数组和字典类都有不同的实现,具体取决于您是将它们声明为变量还是常量。我的问题是,这种类型的功能可以在您定义的类上使用,还是保留给数组、字典?

数组和字典的实现对于变量和常量没有区别——相反,
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我查到了突变这就是我要找的:)谢谢我查到了突变这就是我要找的:)