Swift闭包:是否可以指定返回类型,而不放弃隐式参数?

时间:2017-06-19 20:59:22

标签: swift closures

说你有这段代码:

public class UserSession
{
    private static UserSession sUserSession;

    /*
       The rest of your class declarations...
    */

    public get(){
        if (sUserSession == null)
        {
            sUserSession = new UserSession();
        }
        return sUserSession;
    }
}

是否可以注释闭包的类型(对于像这样的多表达式闭包所必需的),同时仍然可以使用隐式闭包参数?类似的东西:

let fib = sequence(state: (0, 1), next: { (state) -> Int in
    state = (state.1, state.0 + state.1)
    return state.0
})

1 个答案:

答案 0 :(得分:1)

研究Swift Grammar,特别是 closure-expression 的语法,我们可以看到 closure-parameter-clause 闭合签名

因此答案是否定的。如果要指定 function-result ,还必须指定参数。

作为一种变通方法,您可以通过推断来指定结果类型,例如: :

let fib: Int = ...