Ruby类型转换任意所需的类

时间:2014-01-25 15:23:50

标签: ruby class

实施例。我有两个随机类变量:

first = 12345    #Fixnum
second = "12345" #String

我可以将第二个var转换为与第一个变量相同的类吗?

我可以使用if block:

if first.class == Fixnum
 second = second.to_i
elsif first.class == String
 # do nothing
end

但是,可以做到这一点,而不是if或case构造吗?

1 个答案:

答案 0 :(得分:2)

您可以使用case声明。

result = case first
  when Fixnum
    second.to_i
  when Array
    [second]
  else
    second
end

但是,如果您开始使用多个值,则可能需要考虑更好的设计模式。例如,您可以将second包装在正确实现强制转换技术的自定义对象类型中。

result = first.class.cast(second)