【ruby】p, puts, printメソッドの使い方
rubyのコードを実行するときに、処理の途中で文字列を表示したり、プログラムで行なった計算結果を出力させたいときに使う、
p,puts,printメソッドの違いについて記載します。
「print」は、指定した値を文字列にして出力するメソッド。
「puts」や「p」と違って出力結果に改行は入りません。
print "printメソッドです。" print 123 # 実行結果 printメソッドです。123
puts
「puts」は、指定した値を文字列にして出力するメソッドです。
出力した文字列の末尾に改行が入ります。
puts "putsメソッドです。" puts 123 # 実行結果 putsメソッドです。 123
p
「p」は、指定した値を読み取りやすい形で出力するメソッドです。
値の型が一目でわかるような形式になっており、デバッグの際によく使われます。
出力した文字列の末尾に改行が入ります。
p "pメソッドです。" p 123 # 実行結果 "pメソッドです。" 123
【ruby】unless文の使い方
unless文は条件式がfalseの時に実行する制御構文です。
「○○の条件に一致したら、△△の処理を行う」といった制御ができる「if」に対し、
「unless」は、「○○の条件に一致しなかったら、△△の処理を行う」といった制御ができます。
unless文の記述方法は以下の通りです。
unless 条件 条件が成立しないときに実行する処理 else 条件が成立するときに実行する処理 end
以下は「num」の変数の値が 1 でなければ、「num は 1 ではありません」と表示する例です。
num = 2 unless num == 1 p "num は 1 ではありません" end # 実行結果 "num は 1 ではありません"
以下では 「num == 1」 に当てはまらないため、else のブロックの中で指定した処理が実行されていることが確認できます。
プログラム
num = 1 unless num == 1 p "num は 1 ではありません" else p "num は 1 です" end # 実行結果 "num は 1 です"
【ruby】mapの使い方
mapメソッドは配列の各要素に対してブロックを評価した結果を新しい配列にして返します。 もしブロックの戻り値がない場合はnilになります。
map メソッドの記述方法は以下の通りです。
オブジェクト.map { |変数| # 実行したい処理 }
例として、配列の要素を2倍にした新しい配列を作る場合は、下記の通りになります。
numbers = [10, 20, 30, 40] new_numbers= numbers.map { |n| n * 2 } p new_numbers # 実行結果 [20, 40, 60, 80]
なお、上の例ではmapメソッドの処理を{}で囲んでいますが、do end で囲んでも同じです。
numbers = [10, 20, 30, 40] new_numbers= numbers.map do |n| n * 2 end p new_numbers # 実行結果 [20, 40, 60, 80]
map!メソッド
配列の値を処理結果に置き換えたい場合に使用します。
mapメソッドは元の値を変更しないのに対して、map!メソッドは元の値を書き換えます。
animals = ["dog", "cat", "bird"] animals.map! {|a| a.length} p animals # 実行結果 [3, 3, 4]
【ruby】配列の使い方
配列とは
- 複数のデータをまとめて一つのリストにした構造のことです。
- 配列で保存すると、ひとつの変数に複数の値をまとめて入れることができます。
- 配列内の要素は、インデックス(添字)で取り出すことができます。
- [ ]を使って配列を作成します。
# 配列を作成 > name = ['taro', 'jiro', 'saburo'] # 配列を確認 > name => ['taro', 'jiro', 'saburo']
配列の値を取得する
一番目の要素を取り出す際は[0]と指定します。
三番目の要素を取り出す際は[2]と指定します。
# 配列の1つ目を取り出す > a[0] => "taro" # 配列の3番めを取り出す > a[2] => "saburo"
配列の末尾に要素を追加する
配列の末尾に新たな値を追加する場合は << を使います。
name = ['taro', 'jiro', 'saburo'] name << 'shiro' p name #実行結果 ['taro', 'jiro', 'saburo', 'shiro']
【ruby】case文の使い方
case を使うと、プログラムの処理を条件分岐させることができます。
「比較対象となる値が○○に当てはまったら、△△の処理を行う」といった制御ができます。
case 比較対象となる値 when 値1 # オブジェクトが値1と一致したときに実行する処理 when 値2 # オブジェクトが値2と一致したときに実行する処理 else # どの when節の値とも一致しないときに実行する処理 end
数値
num = 1 case num when 1 p "num は 1 である" when 2 p "num は 2 である" else p "条件に一致しない" end #実行結果 "num は 1 である"
num = 3 case num when 1 p "num は 1 である" when 2 p "num は 2 である" else p "条件に一致しない" end #実行結果 "条件に一致しない"
文字列
fruits = "grape" case fruits when "orange" p "fruits は orange である" when "grape" p "fruits は grape である" else p "条件に一致しない" end #実行結果 "fruits は grape である
複数の値
num = 1 case a when 1, 2, 3 p "num は 1〜3 である" when 4, 5, 6 p "num は 4〜6 である" else p "条件に一致しない" end #実行結果 "num は 1〜3 である"
【Ruby】for文の使い方
for文は、変数にオブジェクトの中身を1つずつ代入し終わるまで処理します。
for 変数 in オブジェクト do 繰り返しの処理 end
変数に格納されたデータを1つ1つオブジェクトに渡しながらdo endの中に書かれた処理が実行されます。
文字列の配列
strs = ['a', 'b', 'c'] for strs in str do puts str end a b c
数値の配列
strs = [1, 2, 3] for str in strs do puts str end 1 2 3
配列の配列
strs = [['a',1], ['b',2], ['c',3]] for str in strs do puts str end a 1 b 2 c 3
ハッシュの配列
strs = {dog: '犬', cat: '猫'} for str in strs do puts str end dog 犬 cat 猫
【ruby】eachの使い方
eachとはオブジェクトにおける繰り返し処理に使います。
eachを使い、配列やハッシュ(Rubyにおける連想配列です)の要素を全て処理するといったことが可能です
まずは基本構文を見てみましょう。
オブジェクト.each do |変数| # 繰り返し処理 end
オブジェクトの要素が変数の中に入り「# 繰り返し処理」にてその変数を利用可能です。それが要素分繰り返されます。
配列
nums = [1, 2, 3] nums.each do |num| puts num end 1 2 3
ハッシュ
strs = {dog: '犬', cat: '猫'} strs.each do |key, value| puts "#{value}は英語で#{key}" end 犬は英語でdog 猫は英語でcat
オブジェクト
users = User.all <id: 1, name: "bird">, <id: 2, name: "cat">, <id: 3, name: "dog"> users.each do |user| puts user.name end bird cat dog