当前位置: 首页 > 工具软件 > Swift-T > 使用案例 >

Swift --- 方法前缀,以及nonmutating

籍永安
2023-12-01

 

  • 方法前缀

@discardableResult

忽略返回值(消除不用返回值的警告)

static

类型方法(引用类型class中,不可继承,不可与mutating组合)

class

类型方法(只能修饰引用类型class,可以继承,不可与mutating组合)

mutating

可以修改引用类型(struct/enum)内部值

 

  • 扩展:

在声明值类型的实例为不可变变量,即let时,是不可以修改任何它内部的变量值的

一种做法是声明成var,想怎么改,就怎么改。

另一种做法就是nonmutating,它告诉编译器不会修改实例内部的值,也就是set时,不会改变任何其他的变量

例:

struct Test2 {
    var b: Int {
        get {
            return  2
        }
        nonmutating set {
            print("\(newValue)")
        }
    }
}

let t = Test2()
t.b = 3
print(t.b)

和subscript组合应用:

protocol NSUserDefaultsSubscipt {
    subscript(key: String) -> AnyObject? { get nonmutating set }
}
extension NSUserDefaults:NSUserDefaultsSubscipt {
    subscript(key: String) -> AnyObject? {
        get { return objectForKey(key) }
        set { setObject(newValue, forKey: key) }
    }
}
let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
defaults["key"] = "value"

 

 

 类似资料: