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