Looking for ruby Keywords? Try Ask4Keywords

Ruby Language 論理文による制御フロー


直観に反するように見えるかもしれませんが、論理演算子を使って文が実行されているかどうかを判断できます。例えば:

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

これは、ファイルが存在するかどうかを確認し、エラーメッセージがない場合にのみ表示します。 or文は、それはそれはそれは価値のかどうか真か偽であるのは間違いないだろう一度実行を停止します意味し、怠け者です。第1項が真であるとすぐに、他の項の価値をチェックする必要はありません。しかし、第1項が偽であれば、第2項をチェックしなければならない。

一般的な使い方は、デフォルト値を設定することです:

glass = glass or 'full' # Optimist! 

それはまだ設定されていない場合、 glassの値を 'フル'に設定します。より簡潔には、 orシンボリックバージョンを使用することができます:

glass ||= 'empty' # Pessimist. 

また、最初の文がfalseの場合にのみ、2番目の文を実行することもできます。

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

ここでも、 and必要な場合にのみ値に到達する第二の文を実行しますので、怠け者です。

or演算子は、 andよりも優先度が低くandます。同様に、 || &&よりも優先順位が低くなります。シンボルフォームは、ワードフォームよりも優先順位が高くなります。これは、このテクニックと割り当てをいつ組み合わせるかを知るために便利です:

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

Rubyスタイルガイドでは以下を推奨しています。

andorキーワードは禁止されています。読みやすさを最小限にすることは、微妙なバグを導入する高い可能性に値するものではありません。ブール式の場合、常に&&||使用します。代わりに。フロー制御のififunless使用します。 &&||許容されるがあまり明確ではない。