Ruby 整数(';字符串';)调用的内部工作?

Ruby 整数(';字符串';)调用的内部工作?,ruby,class,inheritance,Ruby,Class,Inheritance,如果要查看字符串是否为有效整数,可以执行以下操作: puts Integer('1') #=> 1 由于任何非整数都会引发错误: puts Integer('a') #=> invalid value for Integer(): "a" (ArgumentError) 如果我想确保我的变量同时是一个浮点和一个整数,我不想重复我自己,所以我尝试将这些类放在一个列表中: x = '1' [Integer, Float].each{|c| puts c(x) } #=> und

如果要查看字符串是否为有效整数,可以执行以下操作:

puts Integer('1') #=> 1
由于任何非整数都会引发错误:

puts Integer('a') #=> invalid value for Integer(): "a" (ArgumentError)
如果我想确保我的变量同时是一个浮点和一个整数,我不想重复我自己,所以我尝试将这些类放在一个列表中:

x = '1'
[Integer, Float].each{|c| puts c(x) } #=> undefined method `c' for main:Object (NoMethodError)
有人会解释为什么这不起作用,如果有什么方法来实现我所寻找的?什么样的方法调用是
Integer(var)

请注意,我这里没有要解决的实际问题,我只是好奇。

当您这样做时:

Integer('10')
实际上,您正在调用中定义的类方法,并将参数
10
传递给它

要实现您的目标,您可以执行以下操作:

[:Integer, :Float].each { |c| puts method(c).call(x) }
当您这样做时:

Integer('10')
实际上,您正在调用中定义的类方法,并将参数
10
传递给它

要实现您的目标,您可以执行以下操作:

[:Integer, :Float].each { |c| puts method(c).call(x) }

另一种方式:
[:Integer,:Float]。每个{c}放置发送(c,x)}
另一种方式:
[:Integer,:Float]。每个{c}放置发送(c,x)}