最大查找器不工作

时间:2017-03-23 11:03:30

标签: swift function closures short

我有这段代码:

func doSomething(_ closure: ([Double]?, Double?) -> Double?) {
    closure([1,2,3,4], 8)
}
print(doSomething({ return $0?.max() ?? $1}))

我需要帮助理解它为什么不返回任何内容,何时返回数组中的最大值或第二个参数。

1 个答案:

答案 0 :(得分:1)

doSomething是一个 void 函数。采用类型(([Double]?, Double?) -> Double?)的参数并不意味着函数本身应该返回Double?

虽然这个函数对我来说似乎很奇怪,但我认为你想要实现的是:

func doSomething(_ closure: ([Double]?, Double?) -> Double?) -> Double? {
    return closure([1,2,3,4], 8)
}

完成此编辑后,输出应为:

print(doSomething { return $0?.max() ?? $1 }) // Optional(4.0)

对于这种情况,我建议安全打开它,你可能想要“可选绑定”它:

if let value = doSomething({ return $0?.max() ?? $1}) {
    print(value) // 4.0
}