Ruby: Was ist der beste Weg, Methode Typen, um herauszufinden, in method_missing?
-
04-10-2019 - |
Frage
Im Moment habe ich diesen Code habe:
name, type = meth.to_s.match(/^(.+?)([=?]?)$/)[1..-1]
Aber es scheint nicht die beste Lösung zu sein = \
Alle Ideen, wie man es besser machen? Danke.
Lösung
Die beste Option scheint dies zu sein:
name, type = meth.to_s.split(/([?=])/)
Andere Tipps
Das ist in etwa, wie ich meinen method_missing
umsetzen würde:
def method_missing(sym, *args, &block)
name = sym.to_s
if name =~ /^(.*)=$/
# Setter method with name $1.
elsif name =~ /^(.*)\?$/
# Predicate method with name $1.
elsif name =~ /^(.*)!$/
# Dangerous method with name $1.
else
# Getter or regular method with name $1.
end
end
oder diese Version, die nur einen regulären Ausdruck auswertet:
def method_missing(sym, *args, &block)
name = sym.to_s
if name =~ /^(.*)([=?!])$/
# Special method with name $1 and suffix $2.
else
# Getter or regular method with name.
end
end
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow