2016-07-17 7 views
-1

Ich versuche, einen Konsolen Aufzug Simulator in OOP zu bauen. Ich habe drei Attribute erklärt: currentFloor, minFloor und maxFloor mit attr_accessor.Wie man Ruby-Attribute mit einer `if`-Anweisung überprüft

In currentFloor Reader-Methode, wie kann ich überprüfen, ob der Wert größer als maxFloor oder niedriger als minFloor ist?

+0

zeigen Sie bitte einen Code – tokland

Antwort

1

Entsprechend Ihrer gegebenen Anforderung habe ich eine Lösung, die Ihnen helfen würde.

können Sie auf diese Weise definieren

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 

Jetzt können Sie die Werte in die alle drei attr_accessor zuweisen

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

und prüfen nun die Werte der attr_accessor und Sie auch den Zustand überprüfen was auch immer Sie wollen

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

Wenn Sie noch Fragen haben, lassen Sie mich bitte kennt.

0

siehe What is attr_accessor in Ruby? für die verschiedenen von der:

attr_accessor: default Getter und Setter

attr_reader definieren: define Standard Getter

attr_writer: definieren Standard-Setter

hängt davon ab, was Sie brauchen , sollten Sie den Getter oder Setter anpassen, in Ihrem Beispiel, wenn Sie Ihre Reader-Methode anpassen möchten:

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

Aber öfter, sollten Sie Ihren Setter statt Getter anpassen, wobei in diesem Fall:

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