OOPでコンソールエレベータシミュレータを構築しようとしています。私は、currentFloor
,minFloor
、maxFloor
とattr_accessor
という3つの属性を宣言しました。Rubyの属性を `if`文でチェックする方法
currentFloor
リーダーメソッドでは、値がmaxFloor
より大きいか、minFloor
より小さいかどうかを確認するにはどうすればよいですか?
OOPでコンソールエレベータシミュレータを構築しようとしています。私は、currentFloor
,minFloor
、maxFloor
とattr_accessor
という3つの属性を宣言しました。Rubyの属性を `if`文でチェックする方法
currentFloor
リーダーメソッドでは、値がmaxFloor
より大きいか、minFloor
より小さいかどうかを確認するにはどうすればよいですか?
あなたの要求に応じて、私はあなたを助ける解決策を持っています。
あなたは今、あなたはすべての3つのattr_accessor
elevator = Elevator.new(100,150,500)
に値を代入し、今attr_accessorの値を取得チェックしても、あなたはどのような状態を確認することができ、このよう
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
を定義することができますあなたが望む
if elevator.current_floor > elevator.max_floor
// perform operation here
else
// perform operation here
end
まだ質問がある場合は私にしてください知っている。
は異なるためWhat is attr_accessor in Ruby?を参照してください。
attr_accessor
:デフォルトのゲッターとセッター
attr_reader
を定義します。あなたが必要なものに
は異なり、デフォルトのセッターを定義します。デフォルトのゲッター
attr_writer
を定義しますゲッターまたはセッターをカスタマイズする必要があります。例では、リーダーメソッドをカスタマイズする場合:
class Elevator
attr_writer :currentFloor
def currentFloor
if some_condition_check
raise error
end
currentFloor
end
end
しかし、多くの場合、あなたはその場合には、代わりにゲッターのあなたのセッターをカスタマイズする必要があります
class Elevator
attr_reader :currentFloor
def currentFloor=(current)
if some_condition_check
raise error
end
@currentFloor = current
end
end
をいくつかのコードを表示してください – tokland