suppose que j'ai: p> maintenant, il s'agit d'un appel à une méthode d'entrée en tant qu'arguments d'entrée une chaîne et un bloc. Nice. P> Supposons maintenant que je peux avoir beaucoup d'appels similaires (noms de méthodes différents, mêmes arguments). Exemple: P> otherdummy "string" do
puts "thing"
end
3 Réponses :
J'aime particulièrement utiliser Méthode_MISSING CODE>, en particulier lorsque le code que vous souhaitez utiliser est très similaire sur les différents appels de méthode. Voici un exemple de ce site - Chaque fois que quelqu'un appelle quelqu'un
x.boo code> et
boo code> n'existe pas, méthod_missing est appelé avec
boo code>, les arguments à
boo code >, et (éventuellement) un bloc:
Define_Method code> On dirait également que cela fonctionnerait pour vous, mais j'ai moins d'expérience avec elle que
Method_missing . Voici l'exemple du même lien: P>
%w(user email food).each do |meth|
define_method(meth) { @data[meth.to_sym] }
end
Merci d'un exemple utile (j'ai aussi besoin de gérer les noms de méthodes de cette façon). Je vais certainement aller avec méthody_missing code> en tant que méthodes ne connaissant pas a priori.
Oui, il y a quelques options.
Le premier est L'autre option crée de manière dynamique les méthodes d'instance à Runtime, si vous savez à l'avance, quelles méthodes seront nécessaires. Cela devrait être fait dans la classe, et un exemple est comme celui-ci: p> Il est un modèle courant d'avoir méthod_missing code>. Son premier argument est un symbole qui est la méthode qui a été appelée, et les arguments restants sont les arguments utilisés. P>
définir_method code> appelé dans une méthode de classe qui doit créer de nouvelles méthodes d'instance à l'exécution. p> p>
Je suppose que ce serait met "je suis la méthode # {n}!" Code>. Quoi qu'il en soit, bonne réponse!
Utilisez DEFINE_METHOD:
content goes here