2012-06-13 4 views
3

Это очень простой вопрос о рубине. В чем разница между ClassName#message и ClassName.message?Разница между сообщением «Class # message» и «Class.message»

Я читаю базовое руководство по Ruby, и я вижу, что обе ссылки используются довольно много. Похоже, что в основном используется код ClassName.message, но в документации используется ClassName#message.

Является ли # просто условным документом? Будет ли только . работать для передачи сообщений в реальном коде? Или есть что-то, что мне просто не хватает?

Означает ли это различие в Rails?

ответ

13

В коде используется object.method. В документации, однако, Class#method обозначает метод экземпляра (например, String#upcase), тогда как Class.method или Class::method обозначает метод класса/модуля (например, Math.log10).

+0

Благодарим за сжатый и ясный ответ. – KayoticSully

+1

Рад помочь. Еще один совет, так как вы новичок здесь: это этикетка StackOverflow, чтобы принять самый полезный ответ с небольшой отметкой ниже кнопки downvote. –

+0

Не беспокойтесь, я знаю. Стек не позволил мне выбрать ответ еще на несколько минут, когда я захотел принять ваш ответ. – KayoticSully

4

В документах используется #, чтобы указать разницу между методами класса и методами экземпляра.

В коде вы будете использовать . во всех случаях.

+0

Что можно сказать о Rails. Если моя память служит мне правильной, я помню, что на многих контроллерах есть страница «view # page» или что-то подобное. Как это работает? – KayoticSully

+3

Этот синтаксис относится к Rails и файлу маршрутов. Это не Ruby-код. –

+0

Вы, вероятно, ссылаетесь на синтаксис в файле маршрутов ('controller # action'). –

-1

'#' является рельсом конвенции. В rails className # Message будет отображаться действие Message вашего контроллера className.

Ex: 
    match "profile" => "users#show" 

Это карта root_path/Профиль => Показать метод (или действие) UserController.

+1

Нет, это не соглашение Rails, это соглашение Ruby, которое Rails использует для того, для какого метода следует направлять. –

+0

Поскольку я с RoR-фона, я думал, что это было rails convention, спасибо @AndrewMarshall за обучение мне .. – Sriharsha

+0

@MichaelPapile Он никогда не обозначает переменную экземпляра. В обоих случаях он используется для обозначения метода экземпляра. –

Смежные вопросы