比较实例变量的相等性

时间:2013-07-03 02:42:48

标签: ruby

我是Ruby的新手。

class X
  attr_accessor :minX, :maxX, :minY, :maxY

  def initialize
    @minX = 0, @maxX = 4, @minY = 0, @maxY = 4

    if @minX == @minY && @maxX == @maxY
        # do stuff
    else
        # not square
    end
  end
end

这总是进入else子句 - 为什么?

2 个答案:

答案 0 :(得分:10)

我认为这与你定义实例变量的方式有关,你最终会得到

@maxX=4
@minY=0
@maxY=4
@minX=[0, 4, 0, 4]

所以它总是假的。如果你真的想把它们放在一行,你可以做(​​或遵循Doug R解决方案)

@minX = 0; @maxX = 4; @minY = 0; @maxY = 4

否则,您可以将它们中的每一个放在一个单独的行中

这与Rubys多项任务有关:

foo, bar = [1, 2]  # foo = 1; bar = 2
foo, bar = 1, 2    # foo = 1; bar = 2
foo, bar = 1       # foo = 1; bar = nil

答案 1 :(得分:2)

如果你想让它在一行上,你的作业应该是这样的:

@minX, @maxX, @minY, @maxY = 0, 4, 0, 4