我已定义此功能:
func need_rebalance() -> (Bool, RebalanceStrategy) {
}
其中RebalanceStrategy是枚举类型
enum RebalanceStrategy: String {
case LeftRight = "LeftRight"
case RightLeft = "RightLeft"
}
当我尝试以这种方式打印时,
println("Need rebalance? \(self.need_rebalance())")
我的输出是这样的:
Need rebalance? (false, (Enum Value))
我的问题是:
1)是否容易从元组中提取值? (希望类似于python,例如self.need_rebalance()[1]。显然这个语法在swift中不起作用,因为元组不支持subscript()
)
2)如何打印枚举的原始值而不是(Enum Value)
?
我正在使用XCode6 Beta5
答案 0 :(得分:2)
有一种方法可以使用元组索引提取值,但它并不好,它涉及reflect
:
let tuple = self.need_rebalance()
let reflection = reflect(tuple)
reflection[0].1.value // -> true
reflection[1].1.value // -> RebalanceStrategy.?
此外,如果您的元组成员未命名:
let tuple = self.need_rebalance()
tuple.0 // -> true
tuple.1 // -> RebalanceStrategy.?
要访问enum
中的原始值:
RebalanceStrategy.LeftRight.toRaw()
答案 1 :(得分:1)
使用.0
,.1
等来从未命名的元组中获取相应的值。
要获取枚举的原始值,请使用.toRaw()
var tuple = self.need_rebalance()
println("Need rebalance? \(tuple.0),\(tuple.1.toRaw())")
更好的是,使用这样的命名元组:
var tuple : (boolValue : Bool, enumValue :RebalanceStrategy) = self.need_rebalance()
println("Need rebalance? \(tuple.boolValue),\(tuple.enumValue.toRaw())")