lambda - Ruby中如何避免使用case...when
天蓬老师
天蓬老师 2017-04-22 08:56:14
0
1
836

例如,我有如下代码:

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

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

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全員に返信(1)
巴扎黑

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

リーリー

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

リーリー

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

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!