0Pricing
Swift Academy · 课时

默认参数与可变参数

设置默认值,并接受数量可变的参数

默认参数与可变参数 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。

欢迎

默认参数值允许调用者省略不需要定制的参数。可变参数可以接受任意数量的参数。二者都能减少样板代码并改进应用程序接口。

默认参数值

```swift func log(_ message: String, level: String = "INFO") { print("[\(level)] \(message)") } log("Server started") // [INFO] Server started log("Disk full", level: "ERROR") // [ERROR] Disk full ``` 默认值必须放在必需参数之后。

多个默认值

```swift func connect(host: String, port: Int = 443, useTLS: Bool = true) {} connect(host: "api.example.com") connect(host: "api.example.com", port: 8080) connect(host: "api.example.com", port: 80, useTLS: false) ``` 调用者可以覆盖任意一部分具有默认值的参数。

可变参数

可变参数可以接受同一类型的零个或多个值: ```swift func sum(_ numbers: Int...) -> Int { numbers.reduce(0, +) } print(sum(1, 2, 3)) // 6 print(sum(10, 20, 30, 40)) // 100 ``` 在函数内部,`numbers` 是一个 `[Int]` 数组。

每个函数只能有一个可变参数

Swift 只允许每个函数有一个可变参数(自 Swift 5.4 起不必位于最后): ```swift func format(_ template: String, args: String...) -> String { var result = template for arg in args { result = result.replacingOccurrences(of: "%s", with: arg) } return result } ```

结合默认值和可变参数

```swift func build(separator: String = ", ", _ items: String...) -> String { items.joined(separator: separator) } build("apple", "banana", "cherry") // "apple, banana, cherry" build(separator: " | ", "one", "two", "three") // "one | two | three" ```

将数组传递给可变参数

不能直接将数组传递给可变参数: ```swift let nums = [1, 2, 3] // sum(nums) ❌ — won't compile ``` 使用 `...` 解包(Swift 5.4+ 不内置序列展开;请自行使用归约或展开): ```swift let total = nums.reduce(0, +) ```

默认闭包

默认值同样适用于闭包参数: ```swift func retry(count: Int = 3, action: () -> Bool) {} retry { fetchData() } // count defaults to 3 retry(count: 5) { fetchData() } ``` 使用默认值时,尾随闭包语法仍然适用。

记录默认值

请清楚地注释默认值或为其命名,让调用者知道应有的行为: ```swift /// Sends a request. Timeout defaults to 30 seconds. func send(request: URLRequest, timeout: TimeInterval = 30.0) {} ``` 良好的文档可以避免调用者显式提供默认值。

现实世界模式:类似 print 的应用程序接口

Swift 的标准 `print` 本身就是一个带默认值的可变参数函数: ```swift // Simplified signature: func print(_ items: Any..., separator: String = " ", terminator: String = "\n") print("a", "b", "c") // a b c print("x", "y", separator: "-") // x-y print("no newline", terminator: "") ```

快速检查

在函数内部,可变参数 `Int...` 的类型是什么?

回顾

要点回顾: • 默认值使参数在调用位置成为可选参数 • 默认值必须放在必需参数之后 • 可变参数(`Type...`)接受零个或多个值,在内部会变成数组 • 每个函数只能有一个可变参数 • 将二者结合起来,可以构建灵活而简洁的应用程序接口 接下来:输入输出参数和返回多个值。

常见问题解答

「默认参数与可变参数」课时是免费的吗?

是的 — 「默认参数与可变参数」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。

「默认参数与可变参数」这节课中我会学到什么?

设置默认值,并接受数量可变的参数 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Swift Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「默认参数与可变参数」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Swift Academy 课中编写并运行代码吗?

能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 参数标签与参数名称
  2. 默认参数与可变参数
  3. 输入输出参数与多返回值
  4. 作为一等值的函数
← 返回 Swift Academy