swift 中self Self

新手上路,请多包涵

Question: What difference between 'self' and 'Self'? How do I use "Self" in a function implementaion When I define a function in a superclass to return subclass's type?

Description:

class ZKCodingModel: NSObject{


func filterSelf() -> Self {
    // How do I write to return ZKCodingModel's subclass type?   }
}

}

class ZKSubclass: ZKCodingModel {
}

let sub = ZKSubclass()
//I want to call superclass's method to return subclass' type (ZKSubclass)
let filterdSub = sub.filterSelf()

阅读 2.8k
1 个回答

'Self' is the type of a protocol/class/struct/enum.And the 'self' is a instance of a class/struct/enum.As for your requirement,maybe you could write like this:

class ZKCodingModel: NSObject{
    
    func filterSelf() -> Self {
        let result = self.dynamicType.init()
        return result
    }
    
    required override init() {
        
    }
}

class ZKSubclass: ZKCodingModel {
}

let sub = ZKSubclass()
//I want to call superclass's method to return subclass' type (ZKSubclass)
let filterdSub = sub.filterSelf()
print(filterdSub)

output: <__lldb_expr_35.ZKSubclass: 0x7fdc78e0c2a0>

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进