Какой monkeypatch создает частный метод split?

Вопросы Ruby: закрытый метод для 3:Fixnum и закрытый метод split для nil:NilClass (NoMethodError) упоминают приватные методы split за Fixnum а также NilClass объекты соответственно.

Это личное split метод псевдо-ключевое слово (например, print а также puts)? Если так, что добавило это, и почему они использовали имя метода, которое уже существует для String?

1 ответ

Решение

Вы можете решить это самостоятельно (даже не читая другой ответ):

ruby-1.8.7-p330 :001> 3.method(:split)
#=> #<Method: Fixnum(Kernel)#split> 

Из моего потока поиска методов Ruby ( версия PDF) вы можете видеть, что методы для всех объектов заканчиваются на методах экземпляра Object… Что само по себе включает Kernel, Таким образом, все методы экземпляра Kernel (добавлено много случаев, чтобы быть доступными как удобные методы верхнего уровня) и в конечном итоге, как методы для каждого объекта.

Обратите внимание, что это не так в 1.9+, так как Kernel#split был удален:

ruby-1.9.1-p378 :001> 3.method(:split)
#=> NameError: undefined method `split' for class `Fixnum'
#=>     from (irb):1:in `method'
#=>     from (irb):1
#=>     from /Users/phrogz/.rvm/rubies/ruby-1.9.1-p378/bin/irb:16:in `<main>'
Другие вопросы по тегам