a = (1..5).select(&:even?).map do |s|
s * 2
end
a #=> [4, 8]
로 블록을 취하는 식 리팩토링 I는 방법 및 그 블록 인수로 a
의 우측 표현 리팩토링 싶다. refactor
또는 refactor2
를 사용는 방법 및 그 블록 인수 루비
def refactor
(1..5).select(&:even?).map { |e| yield e }
end
def refactor2(&block)
(1..5).select(&:even?).map(&block)
end
b = refactor do |s|
s * 2
end
b #=> [4, 8]
, 내가 원하는 것을 얻을 수 있습니다.
그러나 블록 을 사용하여 yield
을 감싸거나 블록과 proc 사이를 오가며 나에게 맞는 느낌이 들지 않습니다.
더 간결한 방법이 있습니까?
사용 사례에 전적으로 달려 있습니다. 내 직감은 메서드가 열거자를 반환해야한다고 말합니다. (매핑하는 것 이외의 다른 것을 원한다면 어떻게 될까요?)하지만 그 목적이 혼자서하는 질문의 목적이 무엇인지 이해하지 못합니다. – Max