2016-07-17 8 views
-1

OOPでコンソールエレベータシミュレータを構築しようとしています。私は、currentFloor,minFloormaxFloorattr_accessorという3つの属性を宣言しました。Rubyの属性を `if`文でチェックする方法

currentFloorリーダーメソッドでは、値がmaxFloorより大きいか、minFloorより小さいかどうかを確認するにはどうすればよいですか?

+0

をいくつかのコードを表示してください – tokland

答えて

1

あなたの要求に応じて、私はあなたを助ける解決策を持っています。

あなたは今、あなたはすべての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 

まだ質問がある場合は私にしてください知っている。

0

は異なるため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 
関連する問題