Swift5.1 - 方法(7)

方法

  • 枚举(enum)、结构体(struct)、类(class)都可以定义实例方法类型方法
  • swift 中方法可分为:
    1. 实例方法(Instance Method):可以通过实例对象访问;
    2. 类型方法(Type Method):可以通过类对象访问,用 staticclass 关键词定义;
class Person {
    var age = 10
    static var name = "Json"
    func changeAge(_ age: Int) {
        self.age = age
    }
    
    static func show() {
        print(self.name)
    }
}

let p = Person()
p.changeAge(20)
print(p.age)   // 20

Person.show()  // Json
  • self
    1. 在对象方法中,表示实例对象
    2. 在类型方法中,表示类对象
  • 在类型方法的 name 等价于:self.name、Person.self.name、Person.name;

mutating

  • 结构体枚举 属于值类型,值类型的属性,不能被自身的实例方法修改;
  • 在func 关键字前加 mutating 可以允许这种修改行为;
struct Person {
    var age = 10
    mutating func changeAge(_ age: Int) {
        self.age = age
    }
}

@discardableResult

在 func 前加 @discardableResult 关键词,可以消除返回值未引用产生的警告warning;

struct Person {
    var age = 10
    @discardableResult mutating func changeAge(_ age: Int) -> Int {
        self.age = age + 10
        return self.age
    }
}

var p = Person()
p.changeAge(10)
  • 方法是存储在内存的代码区(Text),不占用实例对象的内存;

源代码demo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。