第2章:Swift语言基础(一)——Playground初体验、常量与变量、基本数据类型
好,咱们正式开始写代码了。
这一章我会带你快速上手Swift的核心基础。别担心,零基础完全没问题。我当年学Swift的时候,也是从这几个概念开始的。说实话,它们比你想的要简单得多。
2.1 Playground初体验
先说说Playground。这是苹果给开发者准备的一个“游乐场”。
你不需要创建完整的App项目,就能直接写代码、看结果。我个人特别喜欢这个工具。为什么呢?因为学习阶段,你不需要关心那些复杂的工程配置,打开就能写。
打开Xcode,选择「Get started with a playground」,选「Blank」模板。你会看到一个白色的编辑区,左边写代码,右边实时显示结果。
试试输入这行:
print("Hello, Swift!")
右边立刻显示结果。嗯,就是这么直接。
我曾经见过不少新手,一上来就建了个完整的iOS项目,结果被各种配置文件搞晕了。其实没必要。Playground就是给你试错用的,大胆写,写错了也不会影响什么。
2.2 常量与变量
Swift里,数据分两种:常量和变量。
- 常量:用
let声明。一旦赋值,就不能改了。 - 变量:用
var声明。可以随时修改。
看代码:
let name = "小明"
var age = 18
// name = "小红" // 这行会报错!常量不能改
age = 19 // 变量可以改
你可能会问:为什么要有常量?
说白了,这是为了安全。我在项目中遇到过好几次,因为不小心把不该改的值改了,导致整个界面显示错乱。用 let 就是告诉编译器:这个值你别动,它固定了。
let 就别选 var。这是Swift社区公认的好习惯。
举个例子。你定义一个用户ID,它永远不会变。那就用 let。而用户的年龄,每年都会变,那就用 var。
2.3 基本数据类型
Swift有几种最常用的数据类型。我一个个说。
2.3.1 整数:Int
Int 就是整数。正数、负数、零都行。
let score = 100
let temperature = -5
在64位设备上,Int 的范围是 -9223372036854775808 到 9223372036854775807。够你用了吧?
2.3.2 小数:Float 和 Double
带小数点的数,Swift给了两种选择:
| 类型 | 精度 | 占用空间 |
|---|---|---|
| Float | 6位小数 | 32位 |
| Double | 15位小数 | 64位 |
let price: Float = 19.99
let pi: Double = 3.141592653589793
我个人习惯:默认用 Double。除非你明确知道内存很紧张,否则 Double 更安全。我曾经在计算金额时用过 Float,结果因为精度问题,小数点后几位对不上账。从那以后,涉及计算的我都用 Double。
2.3.3 布尔值:Bool
只有两个值:true 和 false。
let isLoggedIn = true
let isAdmin = false
它通常用来做条件判断。比如:
if isLoggedIn {
print("欢迎回来")
} else {
print("请先登录")
}
2.3.4 字符串:String
用双引号包起来的文本。
let greeting = "你好,世界"
let emptyString = ""
字符串可以拼接:
let firstName = "张"
let lastName = "三"
let fullName = firstName + lastName // "张三"
也可以插入变量:
let age = 25
let message = "我今年\(age)岁" // "我今年25岁"
这个 \(变量名) 的写法叫字符串插值。你想想看,是不是比用加号拼接方便多了?
2.4 类型推断与类型安全
Swift有个很聪明的特性:类型推断。
什么意思呢?你写 let x = 42,Swift会自动推断出 x 是 Int 类型。你不需要手动写 let x: Int = 42。
let a = 10 // 自动推断为 Int
let b = 3.14 // 自动推断为 Double
let c = "Hello" // 自动推断为 String
但如果你想要明确指定类型,也可以:
let d: Double = 10 // 明确指定为 Double,虽然赋的是整数
再说说类型安全。Swift不允许不同类型之间直接操作。比如:
let num = 10
let pi = 3.14
// let result = num + pi // 这行会报错!Int 和 Double 不能直接相加
为什么会这样?因为Swift觉得这样不安全。你必须显式转换:
let result = Double(num) + pi // 正确
我曾经在项目里见过一个bug,就是因为其他语言允许隐式类型转换,导致一个金额被错误地当成了整数处理。Swift这种严格的态度,其实是在保护你。
2.5 元组
元组是Swift里一个很实用的小工具。它可以把多个值打包成一个整体。
let user = ("小明", 18, true)
print(user.0) // "小明"
print(user.1) // 18
但这样写可读性不好。你可以给每个元素命名:
let user = (name: "小明", age: 18, isVIP: true)
print(user.name) // "小明"
print(user.age) // 18
元组特别适合用来返回多个值。比如一个函数要同时返回用户名和年龄,用元组就很方便。
func getUserInfo() -> (name: String, age: Int) {
return ("小红", 22)
}
let info = getUserInfo()
print("\(info.name) 今年 \(info.age) 岁")
嗯,这里要注意:元组适合临时组合数据。如果数据需要长期使用或传递,还是建议定义结构体或类。
小结
这一章我们学了:
- Playground 怎么用
let和var的区别- Int、Float、Double、Bool、String 这几种基本类型
- 类型推断和类型安全
- 元组的用法
这些是Swift的基石。别急,下一章我们会深入控制流和集合类型。到时候你会看到,这些基础是怎么组合起来干大事的。
先动手试试吧。打开Playground,把上面的代码都敲一遍。敲完你就发现——其实没那么难。