2016-12-06 3 views

ответ

6

Почти. Вы можете сделать свой модуль конвертируемым в прок и использовать его таким образом:

module PrintAny 
    def self.print(text) 
    puts text 
    end 

    def self.to_proc 
    method(:print).to_proc 
    end 
end 

["any"].each &PrintAny # => prints "any" 

Enumerable#each требует, чтобы передать блок, оператор амперсанд (&) преобразует объект блокировать с помощью первого вызова to_proc на этом объекте. И модули - это просто объекты, поэтому, если они имеют метод to_proc, это будет работать.

+0

хороший! Благодаря! Я забыл о to_proc. – gayavat

1

Я не вижу, когда это никогда не может быть использован в реальной жизни, но ...:

['any'].each &PrintAny.instance_method(:call).bind(Object) 
#=> any