“Functions are a first-class type. This means that a function can return another function as its value.
func makeIncrementer() -> (Int -> Int) {
func addOne(number: Int) -> Int {
return 1 + number
}
return addOne
}
var increment = makeIncrementer()
increment(7)”
Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. https://itun.es/gb/jEUH0.l
请问那个第一行的 (Int -> Int) 怎么理解啊
makeIncrementer 的返回类型是一个 (Int -> Int) 类型的函数函数,也就是说这个函数接受一个 Int 类型的参数并且返回 Int 类型的值
我的理解:
第 1 行是宣告这个 func 要返回的是一个「输入是 Int,输出是 Int」的 func
第 2 行是宣告一个新的 func 其「输入是 Int,输出是 Int」
最后的 return 就必须回传一个 type 跟 1 所宣告的 func type 有 match 的 func。
也就是说 1 和 2 的 (Int -> Int) 是分开的,首先 function 要宣告 return type,接著动态产生的 function 也要宣告 type,其 type 要 match return type。把它当一个变数来想就行了。
#11 楼 @saiga 明显是借鉴 Java 的范型 #7 楼 @blacktulip 感觉为了方便静态语言 IDE 查错。 Java 的范型只在 compile 时会对不匹配类型报错,compile 后的 byte code 后范型就没了。