ruby方法 - ruby类




Ruby是一种聪明的方式来执行一个条件上的函数 (2)

您可以创建一个散列,将分数映射到代码:

ScoreMapping = { 
  1 => lamda { do_some_stuff },
  2 => eval("do_some_other_stuff"),
  3 => Proc.new { some_thing_even_more_awesome }
}

Eval不是很漂亮,但你可以做一些其他的东西

eval "function_for_score_of_#{score}"

用它。 给定分数== 1,它会调用function_for_score_of_1。

proc和lambda之间的区别请看看这个 。 这是最无害的;)

作为一个有趣的项目,我在Ruby中实现了一个Beatnik解释器。 如果您从未听说过Beatnik,那么这是一种深奥的编程语言,其操作由源代码中单词的“拼字比分”指定。

无论如何,这个实现需要针对不同的拼字游戏分数进行不同的操作。 这不是特别要实现的,一个明显的方法是if语句:

if score == 1
...
elsif score == 2
...
else
...
end

另一种方法是使用一个case语句:

case score
when 1
  ...
when 2
  ...
else
  ...
end

但是这两种方法都没有让我觉得特别优雅,你能否提出一个实现这个方法的替代方法?


我确定Ruby以某种方式支持委托...我不知道Ruby,所以我不能提供正确语法的示例,但是想法是创建一个对函数的引用数组,然后调用数组:

lookupArray[score](param1, param2);




switch-statement