Rubyで使うor演算子を完全に理解するための5つのステップ

Rubyのor演算子の使い方を学ぶ初心者の人向けのイラスト Ruby
この記事は約7分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

プログラミングの世界に初めて足を踏み入れたとき、数々の新しい概念に頭を悩ませることでしょう。

中でも言語ごとに細かな挙動の違いがある演算子は、しっかりと理解しておくことが求められます。

特に今回取り上げるRubyのor演算子は、その特性を知らずに使うと思わぬバグの原因になることもあります。

しかし心配は不要。

この記事を読むことで、Rubyのor演算子の基本から詳細な使い方、対処法、カスタマイズ方法まで、全てを理解することが可能となります。

●Rubyとは

Rubyは、まつもとゆきひろ氏により開発されたオブジェクト指向型の高級プログラミング言語です。

可読性が高く、自然言語に近い文法を持つため、初心者でも学びやすいとされています。

○Rubyの基本構造

Rubyのプログラムは一連の式と文から成り立っています。

式は値を生成し、文は何かしらのアクションを実行します。

例えば、下記のコードは「1+1」の計算結果を生成する式と、その結果を出力する文からなっています。

# 1 + 1という式を計算し、その結果を出力する
puts 1 + 1 # => 2

●Rubyのor演算子とは

orはRubyの論理演算子の一つで、左辺と右辺のどちらかが真であれば真を返します。

この論理演算子は条件分岐やデフォルト値の設定など、多様な場面で活用されます。

○or演算子の基本的な使い方

or演算子の基本的な使い方は次の通りです。

# true or falseという論理式を評価し、その結果を出力する
puts true or false # => true

この例では、or演算子の左辺がtrueなので、全体の評価結果もtrueとなります。

○or演算子の応用

また、Rubyのor演算子は他の多くのプログラミング言語と違い、低い優先順位を持っています。

これを利用して次のような使い方をすることもあります。

# 変数aに値が

代入できればそのまま、代入できなければ右辺の値を代入する
a = nil
a or a = "default" 
puts a # => "default"

このコードでは、最初にanilを代入しています。

次の行でor演算子を使っていますが、or演算子の左辺anilなので偽と評価され、右辺の式a = "default"が実行され、a"default"が代入されます。

このようにor演算子は、条件による代入に使うことができます。

●or演算子の詳細な使い方

or演算子の詳細な使い方をさらに見ていきましょう。

その際、サンプルコードを使って各ケースを具体的に解説します。

○サンプルコード1:or演算子の基本的な使い方

まずは、or演算子の基本的な使い方について見ていきましょう。

下記のコードでは、or演算子を使って複数の条件を組み合わせ、それらのどれか一つでも真であれば全体として真を返すという仕組みを示しています。

# true or falseという論理式を評価し、その結果を出力する
puts true or false # => true

このコードでは、or演算子の左辺がtrueなので、全体の評価結果もtrueとなります。

○サンプルコード2:or演算子を使った条件分岐

次に、or演算子を使った条件分岐の例を見てみましょう。

このコードでは、or演算子を使ってif文の条件を複数設定し、それらの条件のいずれかが満たされたときに特定の処理を実行するという仕組みを示しています。

# 変数aと変数bのどちらかが5以上であれば、"条件を満たしました"と出力する
a = 3
b = 5
if a >= 5 or b >= 5
  puts "条件を満たしました" # => 条件を満たしました
end

このコードでは、変数aの値が5未満だが、変数bの値が5以上なので、or演算子によって設定された条件が満たされ、「条件を満たしました」というメッセージが出力されます。

○サンプルコード3:or演算子を使った値の代入

or演算子は、条件による値の代入にも使用できます。

下記のコードでは、or演算子を使用して、変数aに値が代入されていない場合にはデフォルト値を代入するという処理を行っています。

# 変数aに値が代入できればそのまま、代入できなければ右辺の値を代入する
a = nil
a or a = "default" 
puts a # => "default"

このコードでは、最初にanilを代入しています。

次の行でor演算子を使っていますが、or演算子の左辺anilなので偽と評価され、右辺の式a = "default"が実行され、a"default"が代入されます。

このようにor演算子は、条件による代入に使うことができます。

ここまでで、or演算子の基本的な使い方から、条件分岐や値の代入に使用する際の詳細な使い方を見てきました。

次に、or演算子の詳細な対処法について解説していきます。

●or演算子の詳細な対処法

or演算子を使ってプログラムを書いていると、時折、思い通りに動作しないケースに出くわします。

そのような場合のエラー対処の一例を、サンプルコードとともに解説します。

○サンプルコード4:エラー対処の一例

ここでは、「未定義のメソッドが呼ばれた時に、or演算子を使ってエラーを適切に処理する」例を紹介します。

# 存在しないメソッドが呼ばれた時に、or演算子を使ってエラーを適切に処理する
begin
  nonexistent_method()
rescue NameError
  puts "メソッドが存在しません"
end

このコードでは、存在しないメソッドnonexistent_method()を呼び出すと、当然のことながらNameErrorが発生します。

このエラーをrescue節で捉えて、”メソッドが存在しません”というエラーメッセージを出力しています。

Rubyにはエラーハンドリングのためのこのような機能があり、or演算子と組み合わせることで、思い通りにプログラムを制御することが可能です。

●or演算子の詳細な注意点

or演算子を使う際には、その演算子の特性を理解し、注意深く使う必要があります。

特に、「短絡評価」という性質を理解することが重要です。

短絡評価とは、or演算子の左辺が真であれば、右辺を評価せずに全体の評価を終えるという性質のことです。

これは、or演算子の基本的な性質であり、多くのプログラミング言語で共通しています。

しかし、この性質により、右辺の式が評価されない場合があることを意識しなければなりません。

つまり、右辺に副作用(外部の状態を変更するような処理)を持つ式がある場合、その副作用が発生しない可能性があることを理解しておく必要があります。

●or演算子の詳細なカスタマイズ

Rubyでは、特定の条件下でor演算子の挙動をカスタマイズすることは難しいです。

なぜなら、or演算子の挙動はRuby言語自体に組み込まれているからです。

しかし、Rubyは動的言語であるため、独自のメソッドを定義したり、オブジェクトの振る舞いを変更することで、orのような挙動を再現することができます。

○サンプルコード5:or演算子をカスタマイズした例

この例では、or演算子の挙動を模倣する独自のメソッドを作成します。

class Object
  def my_or(other)
    self ? self : other
  end
end

puts true.my_or(false) # trueが出力されます
puts false.my_or(true) # trueが出力されます
puts nil.my_or("default") # "default"が出力されます

このコードでは、全てのオブジェクトが持つObjectクラスにmy_orというメソッドを追加しています。

このメソッドは、self(メソッドが呼び出されたオブジェクト自身)が真(nilfalseでない)であればselfを、そうでなければ引数のotherを返します。

これはor演算子の挙動を模倣したものです。

結果として、このmy_orメソッドはor演算子のように振る舞います。

真偽値やnilといったオブジェクトに対して使うことができます。

ただし、注意点として、これはあくまでor演算子の挙動を模倣したものであり、or演算子と全く同じではありません。

特に、or演算子の持つ短絡評価(左辺が真であれば右辺を評価しない)という性質を持ちません。

まとめ

Rubyのor演算子は、そのシンプルさから多くの場面で活用されています。

しかし、そのシンプルさゆえに見落とされがちな挙動や注意点も存在します。

この記事では、or演算子の基本的な挙動から、エラー処理、詳細な注意点、さらにはカスタマイズの方法まで、詳細にわたって解説しました。

これにより、or演算子をより深く理解し、より効果的に活用することができるでしょう。

最後まで読んでいただき、ありがとうございました。