Ruby의 기존 Enumerable 모듈에 사용자 정의 메서드를 추가하려면 어떻게합니까? 저는 Ruby 2.0을 사용하고 있습니다.Enumerable 모듈에 메서드를 추가하는 방법은 무엇입니까?
답변
다른 모든 모듈에 메소드를 추가하는 것과 같은 방법입니다.
당신은 당신이 Enumerable
을 모듈에 방법 histogram
를 추가 할 경우, 그래서
module Foo
def bar(baz, quux)
# code code code
end
end
쓰기는
module Enumerable
# Counts the number of occurrences of each unique object in `self`.
#
# @return [Hash<E, Integer>] a `Hash` of objects mapped to number of occurrences in `self`.
def histogram
group_by(&:itself).map {|k, v| [k, v.size] }.to_hash
end
end
에서 쓰기 Foo
모듈에 매개 변수 baz
및 quux
와 방법 bar
를 추가하려면 Ruby는 이라는 개념을 통합 한 monkey-patching
을 사용할 수 있습니다. 즉, Ruby의 클래스는 언제든지 수정할 수 있습니다. 예를 들어, 숫자 클래스에 double 메소드를 작성할 수 있습니다.
class Integer < Numeric
def self.double
self * 2
end
end
지금 당신은 내가 당신이 쓴 것처럼 열거 가능한 모듈의 방법을 입력,이
네,하지만 그 코드를 어디서 써야하나요? Tnx Tom –
원하는 곳 어디에서라도 –
시도 할 때 irb를 통해 실행하려면 "NoMethodError : u 정의 된 메소드'my_each ' ". 나는 무엇인가를 요구하거나 볼 곳을 말해야합니까? Tnx Tom –
르그 데 도움이
희망 번호에 이중 메서드를 호출 할 수 있습니다,하지만 난 여전히를 얻을 수 오류 "NoMethodError : 정의되지 않은 메소드'my_each '" "그래서 내가 뭘 잘못하고 있니? Tnx Tom –