繁体   English   中英

类型'()'不符合协议'IntegerLiteralConvertible'

[英]Type '()' does not conform to protocol 'IntegerLiteralConvertible'

func makeIncrementer() -> (Int -> Int) {
    func addOne(number: Int) -> Int {
        return 1 + number
    }
    return addOne
}

上面是现在函数在Swift中作为一等类型的简单示例代码,当我以以下方式调用函数时:

var increment = makeIncrementer()
increment(7)

它完美地给出了答案

但是出于好奇,我尝试了直接方法,即

makeIncrementer(7)  // error

它给出了一个错误

为什么会这样??? PS我是Swift的初学者

调用makeIncrementer()返回该函数,因此要调用该函数,请在第二组括号中传递参数:

makeIncrementer()(7)

给出错误消息是因为Swift将makeIncrementer(7)解释为7传递给了不带任何参数的makeIncrementer 希望将来Swift错误消息变得更加友好。 尽管从技术上讲是正确的,但给出的错误消息会引起很多混乱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM