调用以函数作为参数的Object函数

时间:2016-06-25 12:45:01

标签: swift function

说我有以下代码:

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)

我如何在这里多次调用函数?

1 个答案:

答案 0 :(得分:1)

您的函数是枚举值的关联值,因此您必须在调用它之前先将其解压缩。一种方法是使用模式匹配:

if case let .BinaryOperation(function) = multiply {
    function(3.0, 2.0)
}

这也可以写成:

if case .BinaryOperation(let function) = multiply {
    function(3.0, 2.0)
}