Ruby: what is the best way to find out method type in method_missing?
-
04-10-2019 - |
문제
At the moment I've got this code:
name, type = meth.to_s.match(/^(.+?)([=?]?)$/)[1..-1]
But it doesn't seem to be the best solution =\
Any ideas how to make it better? Thanks.
해결책
The best option seems to be this:
name, type = meth.to_s.split(/([?=])/)
다른 팁
This is roughly how I'd implement my method_missing
:
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
Or this version, which only evaluates one regular expression:
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
제휴하지 않습니다 StackOverflow