検索

ホームページ  >  に質問  >  本文

lambda - Ruby中如何避免使用case...when

例如,我有如下代码:

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

请教有没有好方法避免使用case...when,这里每个when里面调用的处理方法传的参数也是不一样的。动态方法调用?用block是否可行?
用动态方法调用,方法名和参数列表提前配置在一个hash中可以达到要求。不知道用block/lambda/proc之类的能否做到?

天蓬老师天蓬老师2780日前911

全員に返信(1)返信します

  • 巴扎黑

    巴扎黑2017-04-22 08:58:14

    大丈夫です。
    詳細については、『Ruby メタプログラミング』という本を読んでください。それを抽象化する方法を教えてくれます。

    リーリー

    ここでは、daily_report、monthly_report、weekly_reportの 3 つのスコープを定義しました
    上記のコードは、3 つの関数の名前を動的に生成し、それらにパラメーターを渡します。

    リーリー

    ここでは多くのパラメータを指定できます。最初のパラメータはメソッド名で、次のパラメータはすべてメソッドに必要なパラメータです。
    その後、関数が同じものであれば、opt に基づいて特定の関数を生成できます。パラメーターにはオプションのパラメーターを使用するだけです。
    Ruby は任意の数のパラメータを受け入れます。メソッドのコードでは、パラメータの前に * 記号を追加する必要があります。このパラメータは、この位置に渡される 0 個以上のパラメータを含む配列として表されます。

    リーリー

    返事
    0
  • キャンセル返事