2011-08-10 57 views
1

如何提取任意对象的所有成员(方法,变量,常量,对象等)并将它们传递给块?Ruby:提取对象的所有成员

def inside(obj) 
    #pass all the members of the object to the block 
end 

inside myLink do 
    url = "myurl.com" 
end 

回答

2

您可以使用instance_eval的:

def inside obj, &block 
    obj.instance_eval &block 
end 

你仍然需要使用,虽然自:

inside myLink do 
    self.url = "myurl.com" 
    # or: 
    @url = "myurl.com" 
end 
+0

嗯,我仍然不知道是否有可能使我提出的语法我的OP。 – themirror

+0

不在Ruby中,OP中的代码将创建一个名为“url”的本地变量,并为其分配“myurl.com”。它不会影响传入对象的实例变量@url。 – robbrit