Swift 让计算 属性 到 Objective C 语法

Swift let computed property to Objective C syntax

我在 Swift 应用程序中有这段代码,很好奇它在 Objective C

中的等效语法是什么
typealias Signal = (Float) -> (Float)

static let sine: Signal = { (time: Float) -> Float in
    return amplitude * sin(2.0 * Float.pi * frequency * time)
}

我相信我会声明 Signal 如下:

typedef float (^Signal)(float);

但我不确定如何设置类似的方法来设置语法来检索值。我考虑过 class 方法,但没有完全解决。

谢谢

这不是计算结果 属性。这是一个“closure”。

所以这定义了一个闭包的类型别名,它接受一个 Float 作为参数并且 returns 一个 Float:

typealias Signal = (Float) -> (Float)

您可以像这样创建此 Signal 闭包的实例:

let doubler: Signal = { [=11=] * 2 }

你可以这样调用闭包:

print(doubler(21))     // 42

定义“block”类型的等效 Objective-C 语法:

typedef float (^Signal)(float);

要创建 Signal 块的实例:

Signal doubler = ^(float input) {
    return input * 2;
};

并调用它:

NSLog(@"%f", doubler(21));   // 42