人気のメソッド
push
配列の最後に値を追加したいときに使います。元の配列が更新されます。
arr = [1, 2]; arr.push(3) #=> [1, 2, 3]
Ruby Ruby 1.8〜
append
pushと同じで、配列の最後に値を追加します。
nums = [10]; nums.append(20) #=> [10, 20]
Ruby Ruby 2.5〜
<<
pushと同じで、末尾に値を足したいときに使います。記述が短くできます。
list = []; list << "a" << "b" #=> ["a", "b"]
Ruby Ruby 1.8〜
構文 条件分岐・くり返し
if や while など、条件によって処理を変えたり、同じ処理をくり返すための書き方です。
if文
条件によって処理を分けたいときに使います。
score = 75 if score >= 60 puts "合格" else puts "不合格" end
Ruby 1.8.7〜
unless文
条件が当てはまらないときだけ処理したいときに使います。
user = User.find(id) unless user puts "ユーザが存在しません" end
Ruby 1.8.7〜
case文
複数の条件をまとめて分岐したいときに使います。
case color when "red" puts "赤です" when "blue", "green" puts "寒色系です" else puts "その他の色です" end
Ruby 1.8.7〜
while文
条件が成り立つ間、繰り返し処理したいときに使います。
i = 0 while i < 3 puts i i += 1 end
Ruby 1.8.7〜
until文
条件が成り立たなくなるまで繰り返したいときに使います。
password = "" until password == "ruby" password = gets.chomp end
Ruby 1.8.7〜
for文
配列や範囲の全ての要素に対して繰り返したいときに使います。
sum = 0 for n in [1, 2, 3] sum += n end puts sum #=> 6
Ruby 1.8.7〜
break
ループを途中で抜けたいときに使います。
numbers.each do |num| break if num < 0 puts num end
Ruby 1.8.7〜
next
ループ内で次の繰り返しに進みたいときに使います。
(1..5).each do |i| next if i % 2 == 0 puts i # 奇数のみ出力 end
Ruby 1.8.7〜
redo
同じ繰り返しをやり直したいときに使います。
i = 0 while i < 3 puts i i += 1 redo if i == 3 && need_repeat end
Ruby 1.8.7〜
retry
例外処理で、もう一度最初からやり直したいときに使います。
begin attempt_network_request rescue TimeoutError retry # タイムアウト時に再試行 end
Ruby 1.9.0〜
case/in文(パターンマッチ)
値の中身や形によって分岐したいときに使います。配列やハッシュの中身を直接判定できます。
case data in {name: n, age: 20..} puts "20歳以上の#{n}さん" in [x, y, z] puts "3要素の配列を受け取りました" else puts "マッチしませんでした" end
Ruby 3.0.0〜
右代入演算子(=>)
配列や値を「[a, b] => [x, y]」のように右側の変数に分解して代入したいときに使います。
[1, 2, 3] => [first, *rest] p first #=> 1 p rest #=> [2, 3]
Ruby 3.0.0〜
パターンマッチ式(in)
値が特定の形かどうかをif文などで簡単に判定したいときに使います。
if [x, y] in coords puts "X=#{x}, Y=#{y}" end
Ruby 3.0.0〜
三項演算子(?:)
簡単な条件分岐を1行で書きたいときに使います。
result = score >= 60 ? "合格" : "不合格"
Ruby 1.8.7〜
フリップフロップ演算子
たとえば「BEGINからENDまで」のように、特定の範囲に入ったら出るまでtrueにしたいときに使います。テキスト処理などで便利です。
DATA.each_line do |line| puts line if line =~ /BEGIN/ .. line =~ /END/ end __END__ BEGIN foo END
Ruby 2.7.0〜