2011-08-10 3 views
1

Comment extraire tous les membres (méthodes, variables, constantes, objets, etc.) d'un objet arbitraire et les transmettre à un bloc?Ruby: extraire tous les membres d'un objet

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

inside myLink do 
    url = "myurl.com" 
end 

Répondre

2

Vous pouvez utiliser instance_eval:

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

Vous aurez toujours besoin d'utiliser l'auto bien:

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

Hmm je me demande encore s'il est possible d'activer la syntaxe que je proposais dans mon OP. – themirror

+0

Non en Ruby, le code de votre OP créerait une variable locale appelée "url" et lui assignerait "myurl.com". Cela n'affecterait pas la variable d'instance @url de l'objet transmis. – robbrit

Questions connexes