类型推断的工作原理
了解 Swift 如何根据上下文推断类型。
类型推断的工作原理 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。
什么是类型推断
Swift 可以根据表达式的上下文推断值的类型。通常不需要显式写出类型。
let count = 42
let name = "Swift"
print(type(of: count))
print(type(of: name))从字面量推断
整数型字面量会推断为 Int,小数型字面量会推断为 Double,带引号的字面量会推断为 String。
let a = 10
let b = 3.14
let c = "hello"
print(type(of: a), type(of: b), type(of: c))从初始化器推断
调用初始化器时,结果类型会决定变量的推断类型。
let pi = Double.pi
let flag = Bool(true)
print(type(of: pi))
print(type(of: flag))从函数返回值推断
由函数调用赋值的变量会采用该函数的返回类型。
func makeGreeting() -> String {
return "Hi"
}
let g = makeGreeting()
print(type(of: g))集合中的推断
数组和字典字面量会根据其中的值推断元素类型。
let nums = [1, 2, 3]
let pairs = ["a": 1, "b": 2]
print(type(of: nums))
print(type(of: pairs))双向推断
Swift 会进行双向推断:既从值推断变量类型,也会根据声明的类型反向推断字面量类型。
let x = 5 // Int inferred from literal
let y: Double = 5 // literal adapts to Double
print(type(of: x), type(of: y))跨表达式推断
编译器会共同求解整个表达式的类型,选择能使所有操作有效的类型。
let result = 2 + 3 * 4
print(result)
print(type(of: result))推断可减少冗余
类型推断让代码更加简洁。当字面量已经表明类型为 String 时,写出 let names: [String] = [...] 就是多余的。
let names = ["Ada", "Bob", "Cleo"]
print(names.count)推断失败时
如果编译器无法找到唯一的类型,就会产生错误,您必须添加类型注解。空集合就是典型情况。
let empty: [Int] = []
print(empty.isEmpty)推断是静态的
类型推断发生在编译时。类型一旦推断出来就会固定;Swift 不是动态类型语言。
var n = 10
// n = "text" // would be a compile error
n = 20
print(n)推断与性能
类型推断不会产生运行时开销。编译器会在生成二进制文件前解析类型,因此使用推断的代码与带类型注解的代码运行速度完全相同。
let total = (1...100).reduce(0, +)
print(total)快速检查
测试您对类型推断的理解。
回顾
类型推断让 Swift 在编译时根据字面量、初始化器、返回值和周围上下文推断类型。它可以在不增加运行时开销的情况下减少冗余,但在无法确定唯一类型时会失败(例如空集合)。
let a = 1
let b = 2.0
let c = "x"
print(type(of: a), type(of: b), type(of: c))常见问题解答
「类型推断的工作原理」课时是免费的吗?
是的 — 「类型推断的工作原理」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。
「类型推断的工作原理」这节课中我会学到什么?
了解 Swift 如何根据上下文推断类型。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Swift Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「类型推断的工作原理」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Swift Academy 课中编写并运行代码吗?
能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。