Autre que self.class.send :method, args...
, bien sûr. Je voudrais rendre une méthode plutôt complexe disponible au niveau de la classe et de l'instance sans dupliquer le code.Existe-t-il un moyen d'appeler une méthode Class privée à partir d'une instance dans Ruby?
MISE À JOUR:
Branam @ Jonathan: c'était mon hypothèse, mais je voulais vous assurer que personne d'autre avait trouvé un moyen de contourner. La visibilité dans Ruby est très différente de celle de Java. Vous êtes également tout à fait raison que private
ne fonctionne pas sur les méthodes de classe, bien que cela déclarera une méthode de classe privée:
class Foo
class <<self
private
def bar
puts 'bar'
end
end
end
Foo.bar
# => NoMethodError: private method 'bar' called for Foo:Class
Obtention d'une erreur pour le premier exemple: '1.9.3p327: 078> f = Foo.new => # 1.9.3p327: 079> f.class.send: calling_private_method NoMethodError: méthode définie \ 'calling_private_method » pour Foo: Classe de (RIR) : 79 de ~/.rvm/rubies/ruby-1.9.3-p327/bin/irb: 16: in \ ' '' –
TrinitronX
Oui, cela ne fonctionne pas (ou ne fonctionne peut-être plus). –
Il y avait une faute de frappe - mis à jour mon code @JacobCrofts – metakungfu