Swift中的“必需”关键字是什么意思?
举个例子:
class A { var num: Int required init(num: Int) { self.num = num } } class B: A { func haveFun() { println("Woo hoo!") } } 我已经根据需要标记了A的init函数.这是什么意思?我在子类B中完全省略它,编译器根本就不会抱怨.那怎么需要呢?
见
“Automatic Initializer Inheritance”:
在你的例子中,B子类没有自己定义任何初始化器,因此它是 class B: A { convenience init(str : String) { self.init(num: Int(str)!) } func haveFun() { print("Woo hoo!") } } 但是如果子类定义了任何指定的(=非便利)初始化器,那么它就可以了 class C: A { init(str : String) { super.init(num: Int(str)!) } func haveFun() { print("Woo hoo!") } } // error: 'required' initializer 'init(num:)' must be provided by subclass of 'A' 如果从A的init方法中删除所需的,那么C类编译也. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |