Я начинаю Ruby. Из книги я знаю, что имя метода Ruby должно начинаться с строчной буквы или подчеркивания. Но я нашел разные сценарии:
-
Если метод определен вне класса, он может начинаться только с буквы нижнего регистра, Ruby будет жаловаться на ошибку, если вы попытаетесь определить метод, начинающийся с прописной буквы, например:
define sayHi puts "Hello" end sayHi # => Hello
но следующий код не работает:
define SayHi puts "Hello" end SayHi
он выдает ошибку:
:in `<main>': uninitialized constant SayHi (NameError)
-
Если метод определен внутри класса, то он может начинаться с буквы верхнего регистра:
class Test def SayHi puts "hello" end end t = Test.new t.SayHi # => hello
Кто-нибудь знает, почему №1 не работает, а # 2 работает? Каковы точные правила имени рубинового метода?