我是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子句 - 为什么?
答案 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