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

Ruby 奇怪的红宝石行为。有人能解释一下吗?,ruby,Ruby,我在玩ruby解释器,然后事情发生了。怎么做 class Expe attr_reader :i def yo @i = 3 end end a = Expe.new puts a.yo.i #=> 0+3i 我想你正在做的是把a.yo转换成一个复数。 如果您输入一个则输入一个.yo.i.class它将返回Complex 我认为你应该做的是: a = Expe.new puts a.yo #=> 3 puts a.i #=> 3 (returni

我在玩ruby解释器,然后事情发生了。怎么做

class Expe
  attr_reader :i

  def yo
    @i = 3 
  end
end

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

我想你正在做的是把a.yo转换成一个复数。 如果您输入一个
则输入一个.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)

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

见: