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.

War es hilfreich?

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
scroll top