>  Q&A  >  본문

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之类的能否做到?

天蓬老师天蓬老师2761일 전887

모든 응답(1)나는 대답할 것이다

  • 巴扎黑

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

    그렇습니다.
    자세한 내용은 Ruby Metaprogramming 책을 읽어보세요. 추상화하는 방법을 알려줄 것입니다.

    으아아아

    여기서는 세 가지 범위 daily_report Monthly_report Weekly_report를 정의했습니다
    위의 코드는 세 가지 함수의 이름을 동적으로 생성한 다음 해당 함수에 매개변수를 전달합니다.

    으아아아

    여기에는 다양한 매개변수가 제공될 수 있습니다. 첫 번째 매개변수는 메소드 이름이고, 다음 매개변수는 메소드에 필요한 모든 매개변수입니다.
    그런 다음 기능이 동일한 경우 opt를 기반으로 특정 기능을 생성할 수 있습니다. 매개변수에는 선택적 매개변수를 사용하세요.
    Ruby는 원하는 수의 매개변수를 허용합니다. 매개변수 앞에 * 기호를 추가해야 합니다. 메소드 코드에서 이 매개변수는 이 위치에 전달되는 0개 이상의 매개변수를 포함하는 배열로 표시됩니다.

    으아아아

    회신하다
    0
  • 취소회신하다