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. 只作為標記
- var money = 1_000_000
變數money依舊代表的是數字1000000, 但看起來更清晰化,數字之間彷彿有了間隔。
2. 任意匹配
比如,判斷點(1,1)是否在某個範圍之內。我們可以用下面的寫法
可以看出,case (_,0) 和 case (0,_) 分別表示x軸和y軸,而這裡的"_"就表示x或者y軸上面所有的點。
3. 起忽略作用
比如for迴圈中只需要執行裡面的內容,而又與迴圈變數沒有關係。
- for _ in 1...8 {
- println("Why")
- }
再舉一個例子,忽略外部引數名,先定義一個“預設引數值”的建構函式
- func addStudent(name: String, age: Int = 20){
- println("新增學生:name=\(name), age=\(age)")
- }
- addStudent("Jack", age: 20)
可以看出age形參有個預設引數值20,所以在呼叫的時候,呼叫方法中,有age這個提示。
下面,我們試著使用_進行忽略,程式碼如下:
- func addStudent2(name: String, _ age: Int = 20){
- println("新增學生:name=\(name), age=\(age)")
- }
- addStudent2("Rose", 18)
可以看出,這次呼叫的時候,不需要出現age這個提示符了。
注:關於函式,方法,外部引數名等定義,我會在下一章節進行詳細的介紹。
二、switch用法
1. 基本用法,觀察寫法可知,swift中的switch使用不在需要break關鍵字了。
2. 多條件匹配,可以看出它的寫法與objective-c也有所不同,在objective-c中,多條件匹配是幾個case並列寫,而在swift中,只需要一個case並且條件之間用","隔開。
3. 範圍匹配,其實也就是 "..."的用法,上一節中,我已經進行了說明,這裡就不在解釋了。
4. 元組匹配(參見下劃線用法2)
5. 條件過略,即引入了where關鍵字,配合switch進行條件過略。