Looking for ruby Keywords? Try Ask4Keywords

Ruby Language Kontroluj przepływ za pomocą instrukcji logicznych


Przykład

Chociaż może się to wydawać sprzeczne z intuicją, można użyć operatorów logicznych do ustalenia, czy instrukcja jest uruchamiana. Na przykład:

File.exist?(filename) or STDERR.puts "#{filename} does not exist!"

Spowoduje to sprawdzenie, czy plik istnieje, i wydrukuje komunikat o błędzie, jeśli nie istnieje. Instrukcja or jest leniwa, co oznacza, że przestanie działać, gdy będzie pewne, czy jej wartość jest prawdą czy fałszem. Gdy tylko pierwszy warunek okaże się prawdziwy, nie ma potrzeby sprawdzania wartości drugiego terminu. Ale jeśli pierwszy termin jest fałszywy, musi sprawdzić drugi termin.

Typowym zastosowaniem jest ustawienie wartości domyślnej:

glass = glass or 'full' # Optimist! 

To ustawia wartość glass na „pełny”, jeśli nie jest jeszcze ustawiona. Mówiąc dokładniej, możesz użyć symbolicznej wersji or :

glass ||= 'empty' # Pessimist. 

Możliwe jest również uruchomienie drugiej instrukcji tylko wtedy, gdy pierwsza jest fałszywa:

File.exist?(filename) and puts "#{filename} found!"

Ponownie and jest leniwy, więc wykona drugie polecenie tylko w razie potrzeby, aby uzyskać wartość.

Operator or ma niższy priorytet niż and . Podobnie || ma niższy priorytet niż && . Formy symboli mają wyższy priorytet niż formy słów. Warto wiedzieć, kiedy chcesz połączyć tę technikę z zadaniem:

a = 1 and b = 2
#=> a==1
#=> b==2
a = 1 && b = 2; puts a, b
#=> a==2
#=> b==2

Zauważ, że Ruby Style Guide zaleca :

and i or słowa kluczowe są zakazane. Minimalna dodana czytelność nie jest po prostu warta wysokiego prawdopodobieństwa wprowadzenia subtelnych błędów. W przypadku wyrażeń boolowskich zawsze używaj && i || zamiast. Do kontroli przepływu użyj, if i o unless ; i && i || są również do przyjęcia, ale mniej jasne.