ponkiti's blog

主に自分用、イベント参加メモや備忘録として利用

Ruby入門メモ(3)

if文

if 条件
    # 処理
elsif 条件
    # 処理
else
    # 処理
end

比較演算子

演算子の中では、andorが一番優先度が低く、notがそれらの次に優先度が低い。

  • >、<
  • >=、<=
  • ==、!=
  • &&(and)
  • ||(or)
  • !(not)
score = 100
p "OK" if score > 60 # ワンライナーでも書ける
  • false:false、nil(にる、オブジェクトが存在しない)
  • true:false以外、0、'' (空文字)
score = 100
if score # 「== true」が省略されている
    p "OK"
end

条件演算子

if 条件
    a = b
else
    a = c
end

上記を簡単に書くと、下記のように書ける。

b = 10
c = 20
a = b > c ?
puts a #20

多重代入

b, c = 10, 20

条件分岐

case 比較したいオブジェクト
    when# 処理
    when1, 値2 # 複数指定も可
        # 処理
    when# 処理
    else
        # 処理
end

繰り返し処理(ループ処理)

times

n回繰り返す場合は、Integerクラスのtimesメソッドを使う。

3.times do
    p "hello" # `p "hello"`を3回実行
end

3.times do |i|
    p "#{i}: hello" # 0から始まる
end

while

i = 0
while < 3 do
    p "#{i}: hello"
    i += 1 #自己代入 (i = i + 1でも可)
end

for

for i in 0..2 do # 「0..2」は配列やハッシュでも可
    p i
end

for i in ["red", "blue", "pink"] do # 配列
    p i
end

each

配列の場合は、eachメソッドを使う方がよい。

# 配列
["red", "blue", "pink"].each do |color|
    p |color|
end

# ハッシュ
# この場合はエラーとなる
["red"=>200, "blue"=>100, "pink"=>50].each do |color, price| # NG
    p "#{color}: #{price}"
end

# ハッシュの場合、[]を{}とすればOK
{"red"=>200, "blue"=>100, "pink"=>50}.each do |color, price| # OK

ループから抜ける

  • break:ループを抜ける
  • next:ループを1回スキップ