在 Swift 中為什麼需要下劃線?


在 Swift 中,下劃線有多種不同的用途,用於不同的目的。以下是一些示例。

  • 忽略不必要的迴圈變數或返回值。

  • 在函式呼叫中省略外部引數的識別符號。

  • 即使它們最初被指定為常量,也可以使變數可變。

  • 忽略元組元件或在管理錯誤時使用丟棄值。

忽略值

要忽略 Swift 中函式或方法返回的值,請使用下劃線。例如,如果您只關心操作的成功或失敗,則可以編寫如下內容。這是您在程式碼中最常使用的情況。

語法

if _ = someFunction() {
   // do something if the function succeeds
} else {
   // do something if the function failed
}

示例

在此示例中,greetingMessage() 函式返回一個字串值,但我們透過在條件語句中使用下劃線來忽略它。相反,我們只是根據函式是否返回值來檢查函式成功還是失敗。

import Foundation
func greetingMessage(fullName: String) -> String? {
   return "Good morning, \(fullName)"
}
if let _ = greetingMessage(fullName: "Alex Murphy") {
   print("Function successfully executed.")
} else {
   print("Function failed to execute.")
}

輸出

Function successfully executed.

省略外部引數名稱

在 Swift 中,您可以使用下劃線來省略函式或方法的外部引數名稱。此概念廣泛用於 iOS 應用程式中。例如,如果您有如下函式:

語法

func doSomething(_ value: Int) {
   // do something with the value
}

示例

在此示例中,greetingMessage() 函式接受一個名為 fullName 的字串引數,但我們在函式宣告中使用下劃線省略了外部引數名稱。當我們呼叫函式時,我們只需提供一個字串值,而無需指定引數名稱。

import Foundation
func greetingMessage(_ fullName: String) -> String? {
   return "Good morning, \(fullName)"
}
if let _ = greetingMessage("Alex Murphy") {
   print("Function successfully executed.")
} else {
   print("Function failed to execute.")
}

輸出

Function successfully executed.

使變數可變

在 Swift 中,您可以使用下劃線使變數可變。例如,如果您有如下常量:

示例

在此示例中,我們透過在變數名前新增下劃線來建立一個名為 _x 的可變變數。我們用常量 x 的值初始化它。然後我們向 x 新增 10 並列印其值。由於 _x 是可變的,因此我們可以修改其值,即使它最初是從常量值派生的。

import Foundation
let x = 42
var _x = x
_x += 10
print(_x)

輸出

52

忽略迴圈變數

在使用迴圈執行任何操作時,您可以忽略變數。

示例

在此示例中,我們使用下劃線來忽略 for 迴圈中的迴圈變數。我們只是遍歷 numbers 陣列,併為陣列中的每個元素遞增 sum 變數。由於我們不需要使用迴圈變數(通常是整數索引),因此我們可以使用下劃線來表示我們正在忽略它。

import Foundation
let numbers = [1, 2, 3, 4, 5]
var sum = 0
for _ in numbers {
   sum += 1
}
print("Number of elements: \(sum)")

輸出

Number of elements: 5

忽略元組的一部分

元組將多個值組合在一起。為了使用特定值,您可以忽略元組的一部分。

示例

在此示例中,我們使用下劃線來忽略元組的 y 元件。然後我們使用模式匹配來提取元組的 x 和 z 元件並將它們分配給區域性變數。由於我們不需要 y 元件,因此我們可以使用下劃線來忽略它。

import Foundation
let point = (x: 10, y: 20, z: 30)
let (x, _, z) = point
print("All values: \(point)")
print("x: \(x), z: \(z)")

輸出

All values: (x: 10, y: 20, z: 30)
x: 10, z: 30

忽略丟擲值

在使用 do-catch 語句管理程式碼中的錯誤時,您可以忽略丟擲的值。

示例

在此示例中,我們使用下劃線來忽略 doSomething() 函式可能丟擲的錯誤。我們在 do 塊中呼叫該函式,並使用 catch 塊來處理可能丟擲的任何錯誤。由於我們不關心特定的錯誤值,因此我們可以使用下劃線來忽略它,並只打印一個通用的失敗訊息。

import Foundation
func doSomething() throws -> Int {
   // do something that might throw an error
   return 42
}
do {
   let result = try doSomething()
   print("Success: \(result)")
} catch _ {
   print("Failure")
}

輸出

Success: 42

在 Swift 中使用下劃線時,請牢記以下額外注意事項

  • 不需要下劃線。程式碼通常可以在不使用下劃線的情況下編寫,並且仍然產生相同的結果。但是,使用下劃線可以幫助您編寫更易讀和簡潔的程式碼。

  • 如果您過度或不正確地使用下劃線,您的程式碼可能會變得更難以理解。例如,使用下劃線隱藏函式呼叫中重要的錯誤編號可能會導致錯誤或奇怪的行為。

  • 下劃線根據其使用情況具有不同的含義。例如,在 switch 表示式中用作萬用字元模式的下劃線與用於忽略迴圈變數的下劃線具有不同的含義。

  • 下劃線可以與其他語言特性結合使用以建立強大的抽象。例如,將下劃線與閉包語法結合使用可以建立非常簡潔易讀的程式碼。

  • 下劃線並非 Swift 獨有,許多其他程式語言也出於類似目的使用下劃線。

結論

透過使用下劃線,尤其是在您不需要使用特定值或引數名稱時,可以使您的程式碼更簡潔、更易於閱讀。重要的是要謹慎使用下劃線,並避免以可能使程式碼複雜的方式使用它們。與任何語言特性一樣,在程式碼中使用下劃線應該使程式碼更清晰、更易於維護。

更新於: 2023年5月4日

2K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.