我知道cos和{"cos(\($0))"}
部分会发生什么,但我不明白{_ in nil}
部分会发生什么。
enum Operation {
case nullaryOperation(() -> Double, () -> String)
}
var operations: Dictionary<String,Operation> = [
"cos" : Operation.unaryOperation(cos, {"cos(\($0))"}, {_ in nil})
]
func performOperation(_ symbol: String) {
if let operation = operations[symbol] {
switch operation {
case .nullaryOperation(let function, let description):
accumulator = (function(), description(), nil)
}
}
}
答案 0 :(得分:0)
由于@CodeDifferent提到{_ in nil}
语法意味着:忽略传入此闭包的内容并始终返回nil。
考虑这个简单的函数,它给出了一个闭包作为输入。
func myFunc(inputClosure: (arg: Int?) -> Int?){
var num = inputClosure(arg: 2)
print(num)
}
输出等于输入:
myFunc { (arg) -> Int? in
return arg
}
无论输入是什么,输出都是1000:
myFunc () { _ -> Int? in
return 1000
}
无论输入是什么,输出都是nil:
// These are the same:
myFunc { (arg) -> Int? in nil
}
myFunc { _ -> Int? in nil
}