我在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);
但是我不确定如何设置一种类似的方式来设置语法以检索值。我想到了一种类方法,但效果不太理想。
谢谢
这不是计算属性。这是一个“ closure”。
因此,它为闭包定义了一个类型别名,该闭包采用Float
作为参数并返回Float
:
typealias Signal = (Float) -> (Float)
您可以像这样创建此Signal
闭包的实例:
let doubler: Signal = { $0 * 2 }
您可以像这样调用该闭包:
print(doubler(21)) // 42
等效的Objective-C语法,用于定义“ block”的类型:
typedef float (^Signal)(float);
创建Signal
块的实例:
Signal doubler = ^(float input) {
return input * 2;
};
并且称呼它:
NSLog(@"%f", doubler(21)); // 42