我今天瞭解了元組,概括地說,他們允許你存儲幾個值,三元組的一個例子是什麼時候應該使用元組而不是對象,反之亦然?
let exampleTuple = (exampleString: "This", exampleInt: 1)
,我們可以很容易地訪問一個元組的任何值與一個點符號,例如:
exampleTuple.exampleString
對我來說這似乎極其相似持有某些信息的對象,我可能失去了一些東西還是不能完全理解的元組,因此我要求一個解釋,當我們要使用的元組或對象?
我今天瞭解了元組,概括地說,他們允許你存儲幾個值,三元組的一個例子是什麼時候應該使用元組而不是對象,反之亦然?
let exampleTuple = (exampleString: "This", exampleInt: 1)
,我們可以很容易地訪問一個元組的任何值與一個點符號,例如:
exampleTuple.exampleString
對我來說這似乎極其相似持有某些信息的對象,我可能失去了一些東西還是不能完全理解的元組,因此我要求一個解釋,當我們要使用的元組或對象?
元組是相關值的臨時組有用。它們不適合創建複雜的數據結構。
它們通過數據範圍定義「臨時」:如果一段數據永遠不會離開單個方法的範圍或同一對象的一組方法,那麼它可以被認爲是臨時的,即使它可能在應用程序的整個生命週期中持續存在。
如果您的數據結構在臨時範圍外有用 - 例如,因爲它需要從您的類的公共方法返回,請將其建模爲類或結構,而不是元組。
另一個重要的考慮是將行爲與您的數據關聯:如果您的對象需要有方法,請爲它們使用類。僅對沒有行爲的數據使用元組。
元組在Python中大量使用,在我看來,他們在Swift中的用途大多相同。把它想象成一個快速的方法來將多個值從一個點傳送到另一個點。在雨燕書和在Python中經常使用的模式顯示了一個例子是從方法返回一個HTTP狀態代碼和文本主體:
func greeting() {
return (200, "Hello World")
}
...
let (status, body) = greeting()
if 200 == status {
println(body)
}
else if status >= 400 {
println("Error \(status): \(body)")
}
當然,這只是一個用例,但我認爲它得到了重點。內置的例子是功能enumerate()
,它返回的(index, value)
一個元組:
for (idx, val) in enumerate(["a", "b", "c"]) {
println("Index \(idx): \(val)")
}
我正想通過類似的東西來回答這個問題:「這就像一個元組對象(靜態),但語言將其定義爲一個基本類型?「。 然後我想即使是一個整數就像一個只有一個屬性的對象,然後一個對象只是一個字節數組。定義對象類型只是定義瞭如何解釋它所引用的字節? –
@Mayerz它看起來像元組是swift中的一個基本類型,完全得到編譯器的強大支持。他們感覺像你通過例子定義的結構體。就對象類型而言,它們可以靜態或動態地定義。在元組的情況下,定義看起來是靜態類型的。 – dasblinkenlight
好的謝謝你的精確Blinken –