2

就像C# 中的匿名类型一样。新推出的语言 Swift 中的元组是否可以做 C# 中的匿名类型可以做的事情?

在学习 swift 时,我发现了一些语句(他们称之为元组),例如

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 中做到这一点。

4

1 回答 1

2

Swift 中的元组在某种程度上是 C# 的匿名类型和泛型Tuple<T1, T2, ...>类的混合体。

与 C# 匿名类型一样,Swift 允许您根据需要命名元组的“属性”(但是,它只是可选的):

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

它还允许您提取某些值,同时在检索它们时忽略其他值:

let (errorCodeOnly, _) = result

重要的是要注意 Swift 元组的不变性是由varvs决定的let

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

immutableCard.rank = "Jack"    // error, cannot set
mutableCard.rank = "Two"       // OK
于 2014-06-08T03:22:33.783 回答