2014-06-06 33 views
2

Like Anonymous Types in C#。新啓動的語言Swift中的元組可以執行C#中的匿名類型嗎?Swift中的元組是否完全替代匿名類型,如C#

雖然學習迅速,我發現了一些報表(他們稱之爲元組)像

let http200Status = (statusCode: 200, description: "OK") 

我們可以像

println("The status code is \(http200Status.statusCode)") 
// prints "The status code is 200" 
println("The status message is \(http200Status.description)") 
// prints "The status message is OK」 

感覺酷似匿名類型在C#中訪問這些方式。

是Swift中的元組完全替代C#中的匿名類型嗎?有人能給我一個元組和匿名類型的比較嗎?我可以做一件事而不能做其他事情。到目前爲止,我發現了一件事,在C#中,我們不能返回匿名類型(除非是對象),但我們可以在Swift中完成。

+1

元組是一個不可變的集合對象。匿名類型是實例化對象的一種方式。那些是2個不同的主題。 – Franck

+1

@Franck元組在Swift中不是完全不可變的,它依賴於'let' vs'var'。 – Erik

回答

2

Swift中的元組有些是C#的匿名類型和泛型​​類的混合。

與C#匿名類型,斯威夫特讓你,如果你想命名元組的「屬性」(然而,這僅是可選的):

let result = (errorCode: 9001, message:"Power level too high!")

它還允許你提取一定檢索而忽略其他值時,他們說:

let (errorCodeOnly, _) = result

需要注意的是斯威夫特元組不變性由var VS確定,這是很重要。

let immutableCard = (suit: "Spades", rank: "Ace") 
var mutableCard = (suit: "Hearts", rank: "Queen") 

immutableCard.rank = "Jack" // error, cannot set 
mutableCard.rank = "Two"  // OK