3

私は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節に入ります - なぜですか?

4

2 に答える 2

10

インスタンス変数を定義する方法に関係していると思いますが、最終的には

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

したがって、それは常に偽になります。本当にそれらを 1 行にまとめたい場合は、実行できます (または、Doug Rのソリューションに従います) 。

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

それ以外の場合は、それぞれを別の行に入れることができます

これは、Ruby の複数代入に関係しています。

foo, bar = [1, 2]  # foo = 1; bar = 2
foo, bar = 1, 2    # foo = 1; bar = 2
foo, bar = 1       # foo = 1; bar = nil
于 2013-07-03T02:47:27.770 に答える
2

割り当てを 1 行にまとめたい場合は、代わりに次のようにします。

@minX, @maxX, @minY, @maxY = 0, 4, 0, 4
于 2013-07-03T03:03:30.003 に答える