Swift闭包编译失败,表达式太复杂

时间:2017-11-01 03:01:12

标签: swift xcode closures compiler-bug

public static func easeOutQuint(_ t: Float, _ b: Float, _ c: Float, _ d: Float = 1.0) -> Float {
    return {
        return c * ($0 * $0 * $0 * $0 * $0 + 1.0) + b
    }(t / d - 1.0)
}

我不熟悉闭合,所以我不能自己解决,有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

闭包是一个很棒的工具,但是在这个特殊的例子中,如果没有他们将会更好地离开 ...

例如,您可以将您的功能重写为:

public static func easeOutQuint(_ t: Float, _ b: Float, _ c: Float, _ d: Float = 1.0) -> Float {
    let x = (t / d - 1.0)
    return c * (pow(x, 5) + 1) + b
}

顺便说一句,这应该在你遇到的任何 Swift编译器中编译得很好;)