2

我已经定义了这个函数:

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 的原始值而不是拥有(Enum Value)

我正在使用 XCode6 Beta5

4

2 回答 2

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()
于 2014-08-18T08:10:34.227 回答
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())")
于 2014-08-18T08:13:27.693 回答