1
조건부로 블럭을 루비의 다른 메소드에 인수로 전달하는 명확한 방법이 있습니까?조건부 블록 "통과"를 달성하는 관용적 인 방법이 있습니까?
내 Rails 앱에서 래퍼를 사용하여 맞춤 설정된 ActionMailer 동작을 정의하고 있으며 암시 적 (지정된 블록 없음) 및 명시 적 (지정된 블록)보기 템플릿을 우아하게 처리하고자합니다.
class Mailer < ::ActionMailer::Base
# ...
def signed_mail(opts = {}, &block)
# ...
mail mail_opts, &(block_given? ? block : nil)
end
end
임의로가
mail
에 주어진 블록을 통과 에 더욱 관용적 방법이 있는가?
삼항 연산자는 if
/else
을 사용하는 것보다 DRYer 코드를 제공하지만 여전히 어색해 보입니다. 어떤 블록을 지정하지 않은 경우 이미 nil이 될 것 class Mailer < ::ActionMailer::Base
# ...
def signed_mail(opts = {}, &block)
# ...
mail mail_opts, &block
end
end
block
를, 그래서 이것은 충실의 부족에 따라 전달합니다 :
'mail mail_opts, block'을 호출하면 어떻게됩니까? 블록이 0 일 때조차도? 메일 메쏘드는 signed_mail이라는 이름을 가진 기본 템플릿을 찾을 것입니다. –