如何使用`if`语句检查ruby属性

时间:2016-07-17 09:22:31

标签: ruby oop if-statement attributes

我正在尝试在OOP中构建一个控制台电梯模拟器。我声明了三个属性:currentFloorminFloormaxFloor以及attr_accessor

currentFloor阅读器方法中,如何检查该值是否大于maxFloor或低于minFloor

2 个答案:

答案 0 :(得分:1)

根据您的要求,我有一个可以帮助您的解决方案。

你可以这样定义

class Elevator
  attr_accessor :current_floor, :min_floor, :max_floor

  def initialize(current_floor, min_floor, max_floor)
    @current_floor = current_floor
    @min_floor = min_floor
    @max_floor = max_floor
  end

end

现在您可以将值分配给全部三个attr_accessor

elevator = Elevator.new(100,150,500)

现在检查获取attr_accessor的值,并检查你想要的条件

if elevator.current_floor > elevator.max_floor
  // perform operation here
else
  // perform operation here
end

如果您还有任何疑问,请告诉我们。

答案 1 :(得分:0)

请参考What is attr_accessor in Ruby?了解不同的内容:

attr_accessor:定义默认的getter和setter

attr_reader:定义默认的getter

attr_writer:定义默认设置器

取决于你需要什么,你应该自定义getter或setter,在你的例子中,如果你想自定义你的读者方法:

class Elevator
  attr_writer :currentFloor
  def currentFloor
    if some_condition_check
      raise error
    end
    currentFloor
  end
end

但更常见的是,你应该自定义你的setter而不是getter,在这种情况下:

class Elevator
  attr_reader :currentFloor
  def currentFloor=(current)
    if some_condition_check
      raise error
    end
    @currentFloor = current
  end
end