💎

【Ruby 2日目】基本文法 - 演算子

に公開

はじめに

Rubyで使用できる各種演算子について解説します。Ruby 3.4では算術演算子、比較演算子、論理演算子、代入演算子など多様な演算子が用意されています。

基本概念

演算子には以下の種類があります:

  • 算術演算子: +, -, *, /, %, **
  • 比較演算子: ==, !=, <, >, <=, >=, <=>, ===
  • 論理演算子: &&, ||, !, and, or, not
  • ビット演算子: &, |, ^, ~, <<, >>
  • 代入演算子: =, +=, -=, *=, /=, %=, **=
  • 範囲演算子: .., ...
  • その他: ?:(三項演算子)、&.(ぼっち演算子)

使い方

# 算術演算子
puts 10 + 5   #=> 15
puts 10 - 5   #=> 5
puts 10 * 5   #=> 50
puts 10 / 5   #=> 2
puts 10 % 3   #=> 1
puts 2 ** 3   #=> 8

# 比較演算子
puts 5 == 5   #=> true
puts 5 != 3   #=> true
puts 5 <=> 3  #=> 1(左が大きい)

# 論理演算子
puts true && false  #=> false
puts true || false  #=> true
puts !true          #=> false

# 三項演算子
age = 20
status = age >= 20 ? "adult" : "minor"
puts status  #=> "adult"

よくあるユースケース

安全なナビゲーション(ぼっち演算子)

# nilに対して安全にメソッド呼び出し
user = nil

# 通常の場合(エラーになる)
# puts user.name  #=> NoMethodError

# ぼっち演算子を使用
puts user&.name  #=> nil(エラーにならない)

# 実用例
class User
  attr_accessor :address
end

user = User.new
puts user&.address&.city  #=> nil(チェーン可能)

# 配列の要素アクセス
users = [User.new, nil, User.new]
users.each do |u|
  puts u&.address&.city || "住所なし"
end

複合代入演算子の活用

# カウンター
count = 0
count += 1  # count = count + 1と同じ
puts count  #=> 1

# 文字列連結
message = "Hello"
message += " World"
puts message  #=> "Hello World"

# 配列操作
numbers = [1, 2, 3]
numbers += [4, 5]
p numbers  #=> [1, 2, 3, 4, 5]

# べき乗
value = 2
value **= 3
puts value  #=> 8

注意点とベストプラクティス

  • &&とandは優先順位が異なる(&&の方が高い)
  • ぼっち演算子(&.)はRuby 2.3以降で使用可能
  • 宇宙船演算子(<=>)はsortメソッドで重宝する
  • 整数除算は切り捨てられるため、小数が必要な場合はFloatに変換
  • ||=は変数がnilまたはfalseの場合のみ代入する

まとめ

演算子について学びました。実践的なコード例を通じて、Ruby 3.4の機能を活用できるようになりましょう。

参考資料

Discussion