奇怪的红宝石行为。有人可以解释一下吗?

时间:2014-05-31 08:28:18

标签: ruby

我正在玩ruby翻译,然后就发生了。怎么样?

class Expe
  attr_reader :i

  def yo
    @i = 3 
  end
end

a = Expe.new
puts a.yo.i #=> 0+3i

2 个答案:

答案 0 :(得分:13)

我认为您正在做的是将a.yo转换为复数。 如果您输入puts a.yo.i.class,则会返回Complex

我认为你应该做的是:

a = Expe.new
puts a.yo #=> 3 
puts a.i  #=> 3 (returning the 'i' attribute of a)

只需在整数

上调用.i函数,就可以清楚地看到它
puts 3.i  #=> 0+3i  (convert integer 3 to complex)

答案 1 :(得分:2)

您在i上调用方法yo,该方法返回Numeric。在i上定义的方法Numeric 返回相应的虚数。不适用于复数。

请参阅:http://ruby-doc.org/core-1.9.3/Numeric.html#method-i-i