闭包中的类型推断
理解闭包中参数和返回值的推断。
闭包中的类型推断 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。
闭包会推断类型
在许多上下文中,闭包可以根据使用方式推断其参数类型和返回类型。
let numbers = [1, 2, 3, 4]
let doubled = numbers.map { $0 * 2 }
print(doubled)推断参数类型
将闭包传递给 map 时,元素类型会告诉 Swift $0 的类型,因此可以省略参数类型。
let names = ["ada", "bob"]
let upper = names.map { $0.uppercased() }
print(upper)推断返回类型
闭包的主体决定其返回类型。返回 Bool 会使该闭包成为谓词。
let nums = [1, 2, 3, 4, 5]
let evens = nums.filter { $0 % 2 == 0 }
print(evens)简写参数名称
当参数类型可以推断时,$0、$1 等会按位置引用闭包参数。
let sums = zip([1, 2, 3], [10, 20, 30]).map { $0 + $1 }
print(Array(sums))需要时显式声明参数
如果这样能提升清晰度,您仍然可以命名参数并注解类型。
let nums = [3, 1, 2]
let sorted = nums.sorted { (a: Int, b: Int) -> Bool in
return a < b
}
print(sorted)从上下文推断
如果将闭包赋值给带类型的变量,变量的类型会告诉闭包其签名。
let add: (Int, Int) -> Int = { a, b in a + b }
print(add(2, 3))尾随闭包
尾随闭包语法既能保留类型推断,又能让调用位置更易读。
let result = [5, 3, 8, 1].sorted { $0 > $1 }
print(result)reduce 中的推断
在 reduce 中,累加器类型和元素类型会根据初始值和序列推断出来。
let total = [1, 2, 3, 4].reduce(0) { acc, x in acc + x }
print(total)从闭包返回值
单表达式闭包可以省略 return 关键字;表达式的值会作为返回值,其类型也会被推断出来。
let lengths = ["hi", "hello", "hey"].map { $0.count }
print(lengths)带类型注解的闭包变量
如果闭包在没有立即调用的情况下被存储,请注解闭包类型,以便 Swift 推断其主体。
let transform: (String) -> Int = { $0.count }
print(transform("swift"))必须添加注解时
如果周围上下文没有提供类型信息,Swift 就无法推断闭包参数,您必须为其添加类型注解。
let isPositive: (Int) -> Bool = { n in n > 0 }
print(isPositive(5), isPositive(-3))快速检查
测试闭包推断。
回顾
闭包会根据 map、filter 或带类型的变量等上下文推断参数和返回类型。当类型可以推断时,请使用 $0/$1 这样的简写;没有上下文时,请显式添加类型注解。
let f: (Int) -> Int = { $0 + 1 }
let xs = [1, 2, 3].map { $0 * 10 }
print(f(9), xs)用 AI 导师学习 Swift — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 122
- 课程
- 409
常见问题解答
「闭包中的类型推断」课时是免费的吗?
是的 — 「闭包中的类型推断」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。
「闭包中的类型推断」这节课中我会学到什么?
理解闭包中参数和返回值的推断。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Swift Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「闭包中的类型推断」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Swift Academy 课中编写并运行代码吗?
能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。