Paizaで使ったRubyメソッド集〜その1〜
備忘録のためにPaizaで使ったメソッドなどを随時発信していきます。
split メソッド
split メソッド概要
指定した区切り文字で対象となる文字列を分割して配列にするメソッド。
split メソッドの例
p "100,200,300".split(',')
#["100", "200", "300"]
以上のように引数で指定した文字によって文字列が分割されているのがわかります。
そしてそれぞれが配列の要素となっているのがわかります。
join メソッド
joinメソッド概要
配列の要素を結合して一つの文字列としたい場合に使われる。
引数に区切り文字を指定できる。
join メソッドの例
array = ["俺の名は", "山田", "太郎"]
p array.join(",")
# "俺の名は,山田,太郎"
配列の中に入っている各要素が文字列となってくっついているのがわかります。
また、引数によってそれぞれが ” , “で区切られているのがわかります。
puts, p, print メソッド
puts, p, printメソッド概要
puts | p | ||
「改行」 | する | する | しない |
「引数」 | 順番に出力 | 順番に出力 | 順番に出力 |
「オブジェクト」 | 文字列に変換 | \nや\tなどのエスケープ文字も出力する | 文字列に変換 |
「戻り値」 | nil | 引数で配列で返す | nil |
特徴としてまとめると、putsは改行をする、printは改行しない、pはテストで良く使うということを覚えておくと良いかも。
今までputsしか使って来なかったけど、printやpも良く使うようになりました。
map メソッド
mapメソッド概要
配列の要素の数だけブロック内の処理を繰り返し、結果として作成された配列を返す。
mapは元の値に対して影響を与えないがmap!は元の値を書き換える。
また、各要素にメソッドを適用するときは省略することができる
mapメソッドの例
# 例1)
a1 = [100, 200, 300]
a2 = a1.map { |x|
x * 2
}
p a2
# [200, 400, 600]
# 例2) 各要素にメソッドを適用するときは省略することができる
# オブジェクト.map(&:メソッド名)
a = ["APPLE", "ORANGE", "GRAPE"]
p a.map(&:downcase) # ["apple", "orange", "grape"]
a1の配列の各要素に対して2を掛けているのがわかります。
結果、a2の配列の中身は[ 200, 400, 600]となります。
今回はmapを使いましたが、map!を使うとa1の中身が[200, 400, 600]に書き換わります。
この場合、新しい配列a2を作る必要はありませんね。
while メソッド
while メソッド概要
繰り返し処理の一つ。条件式がtrueの間それを実行し続ける。
while メソッドの例
# 等差数列
num = gets.split(" ")
num.map!(&:to_i)
x = num[0]
i = 1
array = []
while i <= 10
array << x
x = x + num[1]
i += 1
end
puts array.join(" ")
「変数 i が10になるまでwhile以下の処理を実行し続けます」ということになります。
max メソッド
max メソッド概要
maxを使うと配列の中の最大値を取り出すことができる。
また、引数で数を指定すると取り出す数を指定できる。
max メソッドの例
array = [10, 3, 2, 6, 8]
puts array.max
# 10
array = [10, 3, 2, 6, 8]
puts array.max(2)
# 10
# 8
配列の中の最大値が取れているのがわかりますね。
引数を指定することで取り出す数も指定できます。
sum メソッド
sum メソッド概要
配列の中の要素を足した合計値を出力する
sum メソッドの例
array = [1, 3, 5, 6, 3, 2, 5, 23, 2]
puts array.sum
# 50
select メソッド
select メソッド概要
配列の中から取り出す要素を選ぶ。
select メソッドの例
array = [4, 0, 5, -1, 3, 10, 6, -8]
puts array.select{|n|n >= 5}.sum
# 21
配列の中から「5以上の数値」を取り出しているのがわかるでしょうか。
今回取り出した数値は「5, 10, 6」になります。それをsumメソッドを使って合計値を出力しています。
コメント