J'essaie de créer dynamiquement des méthodes en fonction du nom fourni comme page-object gem do. Mais dans mon cas c.custom =
juste renvoyé l'argument passé, comme l'affectation simple.define_method pour setter ne travaillera pas dans la classe call
Dans ma tâche originale que je dois envoyer appel de méthode avec la valeur fournie comme: self.send(method).send_keys(value)
De plus, je remarque, lorsqu'il est ajouté puts
à la ligne "called #{name} with #{value}"
et appelé custom
à l'extérieur de l'objet comme C.new.custom = 123
il produira les résultats attendus , mais ce n'est toujours pas ce que je veux.
Existe-t-il un moyen de définir la méthode requise, de l'appeler à l'intérieur et à l'extérieur de l'objet?
module M
def create(name)
define_method("#{name}=") do |value|
"called #{name} with #{value}"
end
end
end
class C
extend M
create(:custom)
def initialize(val)
puts custom = val
end
end
C.new('haha')
@cremno, merci pour le lien, mais ce n'est pas mon problème. Comme avis @engineersmnky - j'assigne à la variable locale là. Je devrais utiliser 'self.custom = 'value'' pour le faire fonctionner. – brbrr