0

使用这个简化Unit的类,我有一个调用的 unset 方法 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
    }
}

要创建此类的实例,我在初始化中附加了一个Converter类型函数( ),如下所示:celsiusToKelvin()

func celsiusToKelvin(input: Double) -> Double { return input + 273.15 }

let celsius = Unit(name: "Celsius", method: celsiusToKelvin)

现在我可以使用celsius.myMethod()与任何实例方法相同的方法,即使我没有funcUnit类中将它定义为 a。

问题:

1)这是向类的特定实例添加方法的有效方法吗?

2)它也可以做struct吗?

3)还有其他(更好/更安全)的方法来实现这一目标吗?

谢谢。

4

0 回答 0