仅使用object.functionName语法可调用核心Ruby方法吗?是否有可能创建自己的方法可以在点语法中调用?点语法与参数传递语法
对于这种方法:下面
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”)'? – 2012-01-12 21:55:45
我添加了错误,谢谢 – holaSenor 2012-01-12 21:57:21
请注意,'obj.m' * always *的意思是“发送消息m'到接收方'obj'”,这意味着在Ruby中,唯一的方法就是使用“x”。工作是为了启用'“x”',或父母,例如'String',回应'm'。 (在某些*其他语言中*可以在不改变接收器或接收器父母的情况下创建过载。) – 2012-01-12 22:01:12