Как добавить свои собственные методы в существующий модуль Enumerable в Ruby? Я запускаю Ruby 2.0.Как добавить методы в модуль Enumerable?
ответ
Точно так же вы добавляете методы ко всем другим модулям.
Если вы хотите добавить метод bar
с параметрами baz
и quux
к модулю Foo
вы пишете
module Foo
def bar(baz, quux)
# code code code
end
end
Итак, если вы хотите добавить метод histogram
к модулю Enumerable
вы пишете
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
В Ruby, вы можете использовать monkey-patching
, который включает в себя концепцию open classes
. Это означает, что классы в Ruby могут быть изменены в любое время. Например, вы можете создать двойной метод в классе чисел.
class Integer < Numeric
def self.double
self * 2
end
end
Теперь вы могли бы назвать двойной метод по ряду
4.double
=> 8
Надеется, что это помогает
да, но где я должен писать этот фрагмент кода, в каком файле? Tnx Tom –
Где бы вы ни хотели? –
Но когда я пытаюсь запустить его через irb, я получаю «NoMethodError: u ndefined метод 'my_each '". Должен ли я что-то требовать или сказать, где искать? Tnx Tom –
Йоргу, я вошел метод в перечислимом модуле так же, как вы написали, но я все еще получаю Ошибка «NoMethodError: undefined method' my_each ».« Так что я делаю неправильно? Tnx Tom –