Ruby 检查方法中的每个参数?

Ruby 检查方法中的每个参数?,ruby,Ruby,假设我有一个方法,它有以下内容 def is_number?(a,b,c,d) # ... check if the argument is a number end 是否可以遍历传递给Is\u number?的每个参数,并执行方法中的操作 例如 is_number?(1,3,"hello",5) 将遍历每个参数,如果每个参数都是一个数字,它将返回true,但在本例中,由于“hello”,它将返回false 我已经知道如何检查输入是否是数字,我只想能够在一个方法中检查多个参数 def i

假设我有一个方法,它有以下内容

def is_number?(a,b,c,d)
  # ... check if the argument is a number
end
是否可以遍历传递给
Is\u number?
的每个参数,并执行方法中的操作

例如

is_number?(1,3,"hello",5)
将遍历每个参数,如果每个参数都是一个数字,它将返回true,但在本例中,由于
“hello”
,它将返回false

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

def is_number? *args; args.all?{|a| a.kind_of?(Fixnum)} end

如果你想匹配不同的职业,请替换Fixnum。

编码高尔夫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就好了,但现在是。

我真的不明白为什么你坚持让整个方法定义都是一行的,它太难读了,没有理由这么做。@AndrewMarshall虽然我更喜欢它是一行,但这并不重要。更重要的一点是,括号、花括号或括号内不应该有空格。我的理解是,只有程序员(不知道正确的正字法)才会这样做。一些程序员还将空格放在标点符号之前。对英语会话有正确理解的人不会这样做。我不得不把它还原,因为我不想看起来没受过教育。最后,许多流行的Ruby源代码,例如RubyonRails,都使用了很多单行程序?Ruby不是英语,也与它的语法规则无关。Ruby文档在大括号中有空格,Pickaxe和Ruby编程语言也有空格,所以我不知道为什么你认为这样做会让你看起来“没受过教育”,因为这意味着Ruby世界中一些最重要的人,包括Matz自己,都是“没受过教育的”。我很想在Ruby或Rails源代码中的任何地方看到一个单行方法定义的例子,因为我怀疑是否有,如果有,我希望它们是罕见的。@AndrewMarshall我想我在Seattle.rb folk编写的代码中见过单行方法。“Ruby的过去、现在和未来”谈话中无用的琐事:
rescue
过去是Matz拼写的
resque
。@Andrewgrim我能看到的唯一一次写一行方法定义是在IRb中和另一个方法中(例如,在对象上定义一个一次性的单例方法),因为主体非常短。也就是说,我不认为编写一行方法定义真的更具可读性。有趣的是,给了.Woah一个全新的含义,
grep
与类常量的使用完全出乎意料,而
==
的另一个疯狂(可怕)的用法。