实例方法的动态调用

class MyClass{

func method(number: Int) -> Int{

return number + 1

}

class func method1(number: Int) -> Int{

return number

}

}

let object1 = MyClass()

let result = object1.method(number: 1)

// 也可以使用下面

// Swift 可以直接调用 Type.instancMethod 的语法生成一个可以 柯里化的方法

let f = MyClass.method          // f 的类型是 (MyClass) -> (Int) -> Int

let f_c : (MyClass) -> (Int) -> Int = MyClass.method    // 这是静态版本

let object2 = MyClass()

let result1 = f(object2)(1)

// 是上面 f 的字面量转换

let f1 = { (obj: MyClass) in obj.method }

// 这种方法是适用于实例方法,对于属性的 getter 或者 setter 是不能用类似的写法的。

// 另外,如果存在和实例方法相同签名的类方法的时候,默认调用的是类方法



实例方法的动态调用_第1张图片

你可能感兴趣的:(实例方法的动态调用)