我是
Swift的新手,想使用一个这样的实例方法来初始化一个对象的成员变量:
class MyClass { var x: String var y: String func createY() -> String { self.y = self.x + "_test" // this computation could be much more complex } init(x: String) { self.x = x self.y = self.createY() } }
基本上,我不想在init方法中内联所有初始化代码,而是将y的初始化代码提取到专用方法createY,并在init中调用此实例方法createY.然而,Swift编译器(Xcode 6.3测试版中的Swift 1.2编译器)抱怨:@H_404_5@
use of ‘self’ in method call ‘xxx’ before super.init initialize self@H_404_5@
这里’xxx’是实例方法(createY)的名称.@H_404_5@
我可以理解Swift编译器的抱怨和潜在的问题.但是,我不知道如何解决它.在Swift中调用init的初始化代码的其他实例方法应该是正确的方法?@H_404_5@
目前,我使用以下技巧作为工作,但我不认为这是这个问题的惯用方法(这个解决方法要求使用var声明,而不是让我感到不舒服)@H_404_5@
init(x: String) { self.x = x super.init() self.y = createY() }