元組模式是逗號(hào)分隔的列表,包含一個(gè)或多個(gè)模式,并包含在一對(duì)圓括號(hào)中。元組模式匹配相應(yīng)元組類型的值。
你可以使用類型注釋來限制一個(gè)元組模式來匹配某種元組類型。例如,在常量申明let (x, y): (Int, Int) = (1, 2)中的元組模式(x, y): (Int, Int),只匹配兩個(gè)元素都是Int這種類型的元組。如果僅需要限制一個(gè)元組模式中的某幾個(gè)元素,只需要直接對(duì)這幾個(gè)元素提供類型注釋即可。例如,在let (x: String, y)中的元組模式,只要某個(gè)元組類型是包含兩個(gè)元素,且第一個(gè)元素類型是String,則被匹配。
當(dāng)元組模式被用在for-in語句或者變量或常量申明時(shí),它可以包含通配符模式,標(biāo)識(shí)符模式或者其他包含這兩種模式的模式。例如,下面這段代碼是不正確的,因?yàn)?code style="box-sizing: border-box; -webkit-tap-highlight-color: transparent; -webkit-font-smoothing: antialiased; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 14px; padding: 0px 5px; color: rgb(199, 37, 78); white-space: nowrap; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; margin: 0px 2px; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248);">(x, 0)中的元素0是一個(gè)表達(dá)式模式:
let points = [(0, 0), (1, 0), (1, 1), (2, 0), (2, 1)]
// This code isn't valid.
for (x, 0) in points {
/* ... */
}
對(duì)于只包含一個(gè)元素的元組,括號(hào)是不起作用的。模式匹配那個(gè)單個(gè)元素的類型。例如,下面是等效的:
let a = 2 // a: Int = 2
let (a) = 2 // a: Int = 2
let (a): Int = 2 // a: Int = 2
元組模式語法
元組模式 → ( 元組模式元素列表 可選 )
元組模式元素列表 → 元組模式元素 | 元組模式元素 , 元組模式元素列表
元組模式元素 → 模式