我正在做一些反思,遇到了一个意想不到的路障。
ruby (或)中是否有返回自身的对象方法
ruby-1.9.2> o = Object.new
=> #<Object:0x00000104750710>
ruby-1.9.2> o.class
=> Object
ruby-1.9.2> o.send :self
NoMethodError: undefined method `self' for #<Object:0x00000104750710>我想要的
ruby-1.9.2> o.send :self
=> #<Object:0x00000104750710> 这是内置的吗?或者我需要扩展Object (打开Object总是让我紧张):
class Object
def itself
self
end
end然后:
ruby-1.9.2> o.send :itself
=> #<Object:0x00000104750710> 好的,关于我正在努力实现的一些背景知识。我在我的rails应用程序中有一个通用的表助手,如果是这样的话你可以调用:
render_list @person, [{field: :name, link_to: :itself},
{field: {address: :name}, link_to: :address}]我一直在为调用:itself的正确方式而苦苦挣扎--但我认为我的补丁是可行的。
发布于 2014-09-17 06:12:08
是!如果使用的是Ruby2.2.0或更高版本,则可以使用Kernel#itself方法。
你可以在这里看到对这个特性的广泛讨论:https://bugs.ruby-lang.org/issues/6373。补丁是由Rafael França在消息#53中提交的。
你可以在object.c的官方Ruby源码中找到它。
发布于 2012-07-11 06:34:11
有关于添加这样的方法的讨论:http://bugs.ruby-lang.org/issues/6373
发布于 2011-06-11 00:39:49
如果你使用的是Ruby1.9版本的>=,你可以使用带有空块的tap方法:
Object.tap{} => Object
Object.new.tap{} => #<Object:0x5f41334>https://stackoverflow.com/questions/6308470
复制相似问题