3

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

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".

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

4

2 回答 2

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 就好了,但目前还没有

于 2012-04-12T04:49:56.133 回答
3
def is_number? *args; args.all?{|a| a.kind_of?(Fixnum)} end

Fixnum如果要匹配不同的类,请替换。

于 2012-04-12T03:04:05.333 回答