检查方法中的每个参数?

时间:2012-04-12 02:59:50

标签: ruby

假设我的方法有以下内容......

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。

我已经知道如何检查输入是否为数字,我只想在一种方法中检查所有参数。

2 个答案:

答案 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