带有存储枚举的条件枚举切换

我想这个代码工作。

我有一个枚举的情况下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: 

不会编译,因为==默认情况下只为没有关联值的枚举定义。