说我有以下代码:
import Foundation
enum Operation {
case BinaryOperation ((Double, Double) -> Double)
}
var multiply = Operation.BinaryOperation({$0 * $1})
//Error: Cannot call value of non-function type 'Operation'
multiply(3.0,2.0)
我如何在这里多次调用函数?
答案 0 :(得分:1)
您的函数是枚举值的关联值,因此您必须在调用它之前先将其解压缩。一种方法是使用模式匹配:
if case let .BinaryOperation(function) = multiply {
function(3.0, 2.0)
}
这也可以写成:
if case .BinaryOperation(let function) = multiply {
function(3.0, 2.0)
}