簡體   English   中英

Swift中的嵌套函數返回類型轉換錯誤

[英]Nested Function in Swift return type casting error

原始代碼:

func makeIncrement()->(Int->Int){
    func addOne(Number:Int)->Int{
        return 1 + Number
    }

    return addOne
}

問題一: (Int-> Int)是否這樣中斷?第一個Int是內部函數的返回類型,第二個Int是外部函數的返回類型? 我自己做了一點實驗,將代碼更改為:

func makeIncrement()->(Int->String){
    func addOne(Number:Int)->Int{
        return 1 + Number
    }

    return String(addOne)
}

錯誤彈出提示NSString不是Int-> String的子類型

我嘗試了其他方法(反向返回類型,但給了我類似的錯誤)

問題二 :在這種情況下,這種類型的鑄造如何工作?

問題一:(Int-> Int)是否這樣中斷?第一個Int是內部函數的返回類型,第二個Int是外部函數的返回類型?

不, (Int -> Int)是外部函數的返回類型,這意味着它返回一個將Int作為參數並返回Int的函數。 因此,您需要返回具有這些特征的函數。

addOne是一個函數。 您不能簡單地采用一個函數並將其轉換為文本( String )。

func makeIncrement() -> (Int -> String) {

說您要返回一個將Int作為參數並返回String的函數

您必須首先創建這樣的功能:

func addOneAsString(number: Int) -> String {
    return String(1 + number)
}

然后返回:

func makeIncrement() -> (Int -> String){
    func addOneAsString(number: Int) -> String {
        return String(1 + number)
    }

    return addOneAsString
}

參見Swift參考-函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM