Ruby Ruby 如何避免使用 case...when 代码

shaogbi · 2014年08月08日 · 最后由 ericguo 回复于 2014年08月09日 · 2230 次阅读

例如,我有如下代码:

case opt
when "opt1"
  method1(param1, param2)
when "opt2"
  method2(param1, param2, param3)
end

请教有没有好方法避免使用 case...when,这里每个 when 里面调用的处理方法传的参数也是不一样的。 动态方法调用?用 block 是否可行?

如果可能最好是在 method 里面改,接受动态的 hash options。

#1 楼 @billy 谢谢关注!我觉得用动态方法调用,方法名和参数列表提前配置在一个 hash 中可以达到要求。不知道用 block/lambda/proc 之类的能否做到

这个 case when 很好呀!为啥要避免,为了动态而动态这是病啊,得治!

#3 楼 @hooopo 赞同,为什么要避免啊

可以把各个 opt 封装为类,再使用 duck typing

换成 if else。。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号