2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ruby method備忘録

Last updated at Posted at 2024-10-28

よく忘れちゃうのでメモ。

配列関係

インスタンス化

list = [1, 2, 3] # 正統派プリミティブ表現
list = %w(吾輩は猫である 名前は萬田太郎) # 文字列。%W()だと"#{変数}"みたいなのも展開してくれる
list = Array.new(5) # 五枠の配列になる。中身はnil。
# 初期値を渡すときは第二引数に指定できるが、全要素が同じオブジェクトを参照するようになる。
# 細かく指定したいならブロックを渡そう。

取得・検索

list[0] # 0番目
list[2, 3] # 2個目から3つ取り出す
list[2..3] # 2個目から3つ目まで
list[..3] # 最初から3つ目まで。負の数を指定したら最後から数えて、になる。
list.first # 0番目を取得。引数を渡すと最初からn個
list.last # 最後を取得。引数で最後からn個。
list.vatues_at(1, 3, 5) # 1つ目、3つ目、5つ目。
list.fetch(2, "ねえよ") # 2つ目、なかったら"ねえよ"が返る。
list.sample(2) # 無作為に2つ選んで返す。
list.find(ifnone) { |item| item.odd? } # 条件に一致するものを探して見つかった最初のものを返す。
# ifnoneはcall()を持つオブジェクト。渡されたとき、条件に一致するものが一つもない場合にcallback
list.find_all { |item| item.end_with?(".com") } # 条件に一致するものすべてを返す。さもなくば空配列。
list.reject { |item| item.empty? } # find_all()の逆。不一致なもののみ取り出す。
list.grep(/0-9+/)
list.index(val) # 要素中からvalを探してそのidx番号を返す。さもなくばnil
list.index { |v| v.lenght < 2} # ブロックもあり。rindex()では後ろから検索できる。
list.compact # nilを消したものを返す。

置換・削除・LIFO/FIFO

list[1..3] = ["犬", "猿", "雉"] # 範囲に詰め込む。過不足が出たら無理やりぶち込む。
list.insert(2, "わんこ") # 2つ目に"わんこ"を挿入。過不足が出たら無理やりぶち込む。
list.fill("教育", range) # 配列を"教育"で埋める。第二引数にはrangeを与えられる。
list.clear # 配列を空に
list.delete("わんこ") # 配列から"わんこ"を除外。
list.delete_at(2) # 2つめを削除
list.keep_if { |elem| elem.length > 3} # 三文字未満を消去
list.push(2) # 後ろに2を積む。
list.pop(3) # 後ろから3つ取り出す。
list.shift(2) # 前から2つ取り出す。
list.unshift(2) # 前に2を積む。

走査・反復処理

自白 実はもともと書きたかったのはここだけだったりする。その他は義務感。
list.each do |item|
    item.upcase if item.ascii_only?
end 
# JSのforEachと一緒。
# 因むとString#upcaseは大文字化、String#ascii_only?は文字列がascii文字のみか判定。
# Rubyではif文を後置できる。

list.each_with_index do |val, idx|
    puts "#{idx}:#{val}"
end
# index,valueの組を受け取れる。callbackの引数の順番がval, idxと直感的でないので注意。

list.each_index { |idx| statement }
list.reverse_each { |item| statement}
# 名前の通り。{}はdo...endの省略。命令が一行で済むときはこっちの方がいいんじゃないかな。

list.map.with_index(1) { |user, idx| statement }
# 疑似的にmap_with_index()を実現できる。

list.each_cons(3) { |ary| statement } 
# [1,2,3], [2,3,4], [3,4,5]のように配列を重複ありで3個ずつ切り出してブロックに渡す。

list.each_slice(2) { |items| statement } # 二つずつ配列に切り出しつつ走査。要素数に余剰が出ようとも続行する。

list.cycle(3) { |v| statement } # 配列を三週する。引数を与えないと無限に回しだすので注意。

要素の勘定

list.length # 要素数。
list.empty? # 配列が空か否か
list.count("犬") # list内にいくつ"犬"があるか。
list.tally # 要素ごとに分別して「要素:個数」の形式でハッシュ(連想配列)を返す。
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?