Swift:使用类初始化器和'初始化实例方法;让';。对吗?
通过这个简化的Swift:使用类初始化器和'初始化实例方法;让';。对吗?,swift,initialization,let,instance-method,Swift,Initialization,Let,Instance Method,通过这个简化的单元类,我有一个名为myMethod的未设置方法,它在创建新实例时初始化 typealias Converter = (input: Double) -> Double class Unit { let name: String let myMethod: Converter init(name: String, method: Converter) { self.name = name self.myMethod
单元
类,我有一个名为myMethod
的未设置方法,它在创建新实例时初始化
typealias Converter = (input: Double) -> Double
class Unit {
let name: String
let myMethod: Converter
init(name: String, method: Converter) {
self.name = name
self.myMethod = method
}
}
要创建该类的实例,请在初始化中附加一个转换器类型函数(celsiusToKelvin()
),如下所示:
func celsiusToKelvin(input: Double) -> Double { return input + 273.15 }
let celsius = Unit(name: "Celsius", method: celsiusToKelvin)
现在我可以使用与任何实例方法相同的celsius.myMethod()
,即使我没有在单元
类中将其定义为func
问题:
1)这是向类的特定实例添加方法的有效方法吗
2)对于结构也可以这样做吗
3)还有其他(更好/更安全的)方法来实现这一点吗
谢谢。这是完全有效的,但有几点意见:1。调用thingsmethod
非常糟糕,只需调用它converter
。2.通常人们不会通过func
,而是直接通过闭包。3.它可以很容易地用于结构,甚至是常量结构。但是,根据您的体系结构,将每个单元作为子类而不是动态生成它们可能更具可读性。感谢您的反馈!是的,我刚刚在这里调用了方法
,以便在类定义中清楚地说明这一点。如果我使用子类,我会在调用它们的方法之前创建实例吗?这真的取决于你怎么做。您可以使用类方法。