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
我在 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