带有存储枚举的条件枚举切换
我想这个代码工作。
我有一个枚举的情况下Direction.Right需要一个距离参数。
enum Direction { case Up case Down case Left case Right(distance: Int) }
现在可以使用一个方向参数的另一个枚举。
enum Blah { case Move(direction: Direction) } let blah = Blah.Move(direction: Direction.Right(distance: 10))
当我打开Blah
枚举,我希望能够像这样有条件地开启Move.Right。
switch blah { case .Move(let direction) where direction == .Right: print(direction) default: print("") }
但是我得到错误…
二元运算符“==”不能应用于“方向”和“_”types的操作数
有没有办法做到这一点?
这其实很简单:)
case .Move(.Up): print("up") case .Move(.Right(let distance)): print("right by", distance)
你的代码
case .Move(let direction) where direction == .Right:
不会编译,因为==
默认情况下只为没有关联值的枚举定义。