Какой 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>'