Являются ли только основные методы Ruby применимыми с использованием синтаксиса object.functionName? Возможно ли создать собственные методы, которые можно вызывать методом точечного синтаксиса?Синтаксис синтаксиса точки против синтаксиса прокси-сервера
Для этого метода:
def namechanger (name)
nametochange = name
puts "This is the name to change: #{nametochange}"
end
Сначала один ниже работает, второй нет.
namechanger("Steve")
"Steve".namechanger
Я получаю сообщение об ошибке на "Steve".namechanger
Ошибка:
rb:21:in `<main>': private method `namechanger' called for "Steve":String (NoMethodError)
Ну, вопрос напрашивается *, что сообщение об ошибке *? А потом ** Почему это имеет смысл **? Хотя вы * можете * «открывать классы» в Ruby, это также может привести к большому загрязнению. Возможно, вы хотите следовать шаблону, например 'Person.new (« Steve »). Change_name (« Fred »)'? –
Я добавил ошибку, спасибо – holaSenor
Обратите внимание, что 'obj.m' * always * означает« отправить сообщение 'm' в приемник' obj', что означает, что в Ruby единственный способ сделать '" x ". m' work - включить '' x "' или родительский, например 'String', ответьте' m'. (В некоторых * других языках * возможно создание перегрузок без изменения родительских (ых) получателей или получателей.) –