最大查找器不工作

Maximum finder not working

我有这个代码:

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

我需要帮助理解为什么它不 return 任何东西,什么时候应该 return 数组中的最大值,或第二个参数。

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

虽然这个功能对我来说很奇怪,但我认为你想要实现的是:

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

此编辑后,输出应为:

print(doSomething { return [=11=]?.max() ??  }) // Optional(4.0)

对于这种情况,我建议安全地解开它,你可能想要 "Optional Binding" 它:

if let value = doSomething({ return [=12=]?.max() ?? }) {
    print(value) // 4.0
}