我最近发现在
Ruby中动态创建对象和方法是相当有用的,这可能是因为我在
Javascript中的背景体验.
在Javascript中,您可以动态创建对象,它的方法如下:
function somewhere_inside_my_code() { foo = {}; foo.bar = function() { /** do something **/ }; };
相当于在Ruby中完成上述语句(如Javascript中一样简单)?
解决方法
您可以使用单例方法来实现.请注意,您可以对所有对象执行此操作,例如:
str = "I like cookies!" def str.piratize self + " Arrrr!" end puts str.piratize
将输出:
I like cookies! Arrrr!
这些方法实际上只是在这个单一的对象(因此名称)上定义,所以这个代码(在上面的代码之后执行):
str2 = "Cookies are great!" puts str2.piratize
只是抛出一个例外:
undefined method `piratize' for "Cookies are great!":String (NoMethodError)