swift - 调用以函数作为参数的对象的函数

标签 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)

我如何在这里调用函数乘法?

最佳答案

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

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

这也可以写成:

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

关于swift - 调用以函数作为参数的对象的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38028667/

相关文章:

swift - 您能否在 Swift 中的扩展之间进行覆盖? (编译器似乎很困惑!)

swift - 如何获取两个 "places"中的firebase数据?

linux - bash 脚本 - 为什么在函数下设置值而不在函数外设置

python - 我可以从 print 语句调用 Python 中的函数吗?

function - F# 函数组合,其中第一个函数的元数 >1

swift - 当碰撞发生时如何快速执行操作? (我没有使用 Sprite 套件)

xcode - 为什么 Xcode 告诉我最后一个 case 永远不会被执行?

ios - 编码通用 String 对象给出 nil Swift

r - 利用回收将不同长度的列表转换为数据帧的功能

python - Pandas 聚合函数输出到 xlsx