1. 程式人生 > >swift 中下劃線

swift 中下劃線

    在Swift在。有許多神奇的下劃線,在這裡,我們將看到神奇的彙總,我希望能夠幫助其他很多學習Swift朋友。

    1.格式化數字字面量

    通過使用下劃線能夠提高數字字面量的可讀性,比如:
let paddedDouble = 123.000_001
let oneMillion = 1_000_000

    2.忽略元組的元素值

    當我們使用元組時,假設有的元素不須要使用。這時能夠使用下劃線將對應的元素進行忽略,比如:
let http404Error = (404, "Not Found")
let (_, errorMessage) = http404Error

    程式碼中。僅僅關心http404Error中第二個元素的值。所以第一個元素能夠使用下劃線進行忽略。

    3.忽略區間值

let base = 3
let power = 10
var answer = 1
for _ in 1...power {
    answer *= base
}

    有時候我們並不關心區間內每一項的值,能夠使用下劃線來忽略這些值。

    4.忽略外部引數名

    (1).忽略方法的預設外部引數名

    在用法(類方法或者例項方法)時,方法的第二個引數名及興許的引數名,預設既是內部引數名,又是外部引數名。假設不想提供外部引數名,能夠在引數名前加入下劃線來忽略外部引數名。
class Counter {
    var count: Int = 0
    func incrementBy(amount: Int, numberOfTimes: Int) {
        count += amount * numberOfTimes
    }
}

    在上面的程式碼中,方法incrementBy()中的numberOfTimes具有預設的外部引數名:numberOfTimes,假設不想使用外部引數名能夠使用下劃線進行忽略,程式碼能夠寫為(只是為了提高程式碼的可讀性,一般不進行忽略):
class Counter {
    var count: Int = 0
    func incrementBy(amount: Int, _ numberOfTimes: Int) {
        count += amount * numberOfTimes
    }
}

    (2).忽略具有預設值的引數的外部引數名

    當函式(或者方法)的引數具有預設值時,Swift自己主動為該引數提供與引數名一致的預設外部引數名,因此在進行函式呼叫的時候,要提供預設引數名。能夠使用下劃線進行忽略預設外部引數名(可是不推薦忽略外部引數名。這主要是為了呼叫的時候能夠方便地知道每一個引數的含義
)。
func join(s1: String, s2: String, joiner: String = " ") -> String {
    return s1 + joiner + s2
}
// call the function.
join("hello", "world", joiner: "-")

    假設不想使用預設外部引數名,能夠進行例如以下改動:
func join(s1: String, s2: String, _ joiner: String = " ") -> String {
    return s1 + joiner + s2
}
// call the function.
join("hello", "world", "-")

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

一、下劃線

Objective-C中,下劃線(_) 並沒有太大作用,一般用來定義變數名稱,比如成員變數的定義 int _age; 但在Swift中,它卻有非常大的功效。

1. 只作為標記

  1. var money = 1_000_000

變數money依舊代表的是數字1000000, 但看起來更清晰化,數字之間彷彿有了間隔。

2. 任意匹配

比如,判斷點(1,1)是否在某個範圍之內。我們可以用下面的寫法


可以看出,case (_,0) 和 case (0,_) 分別表示x軸和y軸,而這裡的"_"就表示x或者y軸上面所有的點。

3. 起忽略作用

比如for迴圈中只需要執行裡面的內容,而又與迴圈變數沒有關係。

  1. for _ in 1...8 {  
  2.     println("Why")  
  3. }  

再舉一個例子,忽略外部引數名,先定義一個“預設引數值”的建構函式
  1. func addStudent(name: String, age: Int = 20){  
  2.     println("新增學生:name=\(name), age=\(age)")  
  3. }  
  4. addStudent("Jack", age20)  

可以看出age形參有個預設引數值20,所以在呼叫的時候,呼叫方法中,有age這個提示。

下面,我們試著使用_進行忽略,程式碼如下:

  1. func addStudent2(name: String, _ age: Int = 20){  
  2.     println("新增學生:name=\(name), age=\(age)")  
  3. }  
  4. addStudent2("Rose"18)  

可以看出,這次呼叫的時候,不需要出現age這個提示符了。

注:關於函式,方法,外部引數名等定義,我會在下一章節進行詳細的介紹。

二、switch用法

1. 基本用法,觀察寫法可知,swift中的switch使用不在需要break關鍵字了。


2. 多條件匹配,可以看出它的寫法與objective-c也有所不同,在objective-c中,多條件匹配是幾個case並列寫,而在swift中,只需要一個case並且條件之間用","隔開。


3. 範圍匹配,其實也就是 "..."的用法,上一節中,我已經進行了說明,這裡就不在解釋了。


4. 元組匹配(參見下劃線用法2)

5. 條件過略,即引入了where關鍵字,配合switch進行條件過略。