例如,我有如下代码:
case opt when "opt1" method1(param1, param2) when "opt2" method2(param1, param2, param3) end
请教有没有好方法避免使用case...when,这里每个when里面调用的处理方法传的参数也是不一样的。动态方法调用?用block是否可行? 用动态方法调用,方法名和参数列表提前配置在一个hash中可以达到要求。不知道用block/lambda/proc之类的能否做到?
欢迎选择我的课程,让我们一起见证您的进步~~
大丈夫です。 詳細については、『Ruby メタプログラミング』という本を読んでください。それを抽象化する方法を教えてくれます。
ここでは、daily_report、monthly_report、weekly_reportの 3 つのスコープを定義しました 上記のコードは、3 つの関数の名前を動的に生成し、それらにパラメーターを渡します。
ここでは多くのパラメータを指定できます。最初のパラメータはメソッド名で、次のパラメータはすべてメソッドに必要なパラメータです。 その後、関数が同じものであれば、opt に基づいて特定の関数を生成できます。パラメーターにはオプションのパラメーターを使用するだけです。 Ruby は任意の数のパラメータを受け入れます。メソッドのコードでは、パラメータの前に * 記号を追加する必要があります。このパラメータは、この位置に渡される 0 個以上のパラメータを含む配列として表されます。
大丈夫です。
リーリー詳細については、『Ruby メタプログラミング』という本を読んでください。それを抽象化する方法を教えてくれます。
ここでは、daily_report、monthly_report、weekly_reportの 3 つのスコープを定義しました
リーリー上記のコードは、3 つの関数の名前を動的に生成し、それらにパラメーターを渡します。
ここでは多くのパラメータを指定できます。最初のパラメータはメソッド名で、次のパラメータはすべてメソッドに必要なパラメータです。
リーリーその後、関数が同じものであれば、opt に基づいて特定の関数を生成できます。パラメーターにはオプションのパラメーターを使用するだけです。
Ruby は任意の数のパラメータを受け入れます。メソッドのコードでは、パラメータの前に * 記号を追加する必要があります。このパラメータは、この位置に渡される 0 個以上のパラメータを含む配列として表されます。