第2章:Swift语言基础(一)——Playground初体验、常量与变量、基本数据类型

好,咱们正式开始写代码了。

这一章我会带你快速上手Swift的核心基础。别担心,零基础完全没问题。我当年学Swift的时候,也是从这几个概念开始的。说实话,它们比你想的要简单得多。

2.1 Playground初体验

先说说Playground。这是苹果给开发者准备的一个“游乐场”。

你不需要创建完整的App项目,就能直接写代码、看结果。我个人特别喜欢这个工具。为什么呢?因为学习阶段,你不需要关心那些复杂的工程配置,打开就能写。

我的建议: 刚开始学Swift,请一定用Playground。它比Xcode的普通项目轻量得多,反馈也快。

打开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

只有两个值:truefalse

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会自动推断出 xInt 类型。你不需要手动写 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 怎么用
  • letvar 的区别
  • Int、Float、Double、Bool、String 这几种基本类型
  • 类型推断和类型安全
  • 元组的用法

这些是Swift的基石。别急,下一章我们会深入控制流和集合类型。到时候你会看到,这些基础是怎么组合起来干大事的。

先动手试试吧。打开Playground,把上面的代码都敲一遍。敲完你就发现——其实没那么难。