簡體   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