假设我的方法有以下内容......
def is_number?(a,b,c,d)
# ... check if the argument is a number
end
是否可以遍历传递给is_number?
的每个参数并执行方法中的操作?
例如......
is_number?(1,3,"hello",5)
将遍历每个参数,如果参数每个参数都是一个数字,它将返回true,但在这种情况下,由于"hello"
,它将返回false。
我已经知道如何检查输入是否为数字,我只想在一种方法中检查所有参数。
答案 0 :(得分:4)
Code golfing sawa的答案:长度相同,但避免|
def is_number?(*args)
(args - args.grep(Fixnum)).empty?
end
is_number?(1,2,3) # => true
is_number?(5,2,"foo") # => false
如果有grep -v会很好,但目前there isn't one。
答案 1 :(得分:3)
def is_number? *args; args.all?{|a| a.kind_of?(Fixnum)} end
如果您想要匹配其他类,请替换Fixnum
。