Hen*_*zia 11 ruby methods object
我最近发现在Ruby中动态创建对象和方法是一项非常重要的工作,这可能是因为我在Javascript中的背景经验.
在Javascript中,您可以动态创建对象,其方法如下:
function somewhere_inside_my_code() {
foo = {};
foo.bar = function() { /** do something **/ };
};
Run Code Online (Sandbox Code Playgroud)
如何在Ruby中完成上述语句(如在Javascript中一样简单)?
Pat*_*ity 12
您可以使用单例方法实现此目的.请注意,您可以对所有对象执行此操作,例如:
str = "I like cookies!"
def str.piratize
self + " Arrrr!"
end
puts str.piratize
Run Code Online (Sandbox Code Playgroud)
这将输出:
I like cookies! Arrrr!
Run Code Online (Sandbox Code Playgroud)
这些方法实际上只在这个单个对象上定义(因此名称),所以这段代码(在上面的代码之后执行):
str2 = "Cookies are great!"
puts str2.piratize
Run Code Online (Sandbox Code Playgroud)
只是抛出异常:
undefined method `piratize' for "Cookies are great!":String (NoMethodError)
Run Code Online (Sandbox Code Playgroud)