あったら便利!だけど使う頻度が低い。そしたら覚えるための脳記憶領域がもったいない。でもやっぱり覚えていたら便利…。新配列とeachでなんとか作れる頭を手に入れたいです。だいたいこんな感じかな?というのは浮かんでます。ということで作ってみました。
記憶力が高いというのは有利ですよね。プログラミングやIT業界に限らず…悲笑。
それはさておき「自分で作れるようにしとけばいい!」ということです。
やってみて思ったこと
「自分で作ることって大事かも…」
要は、作成過程で「ない頭」をめちゃめちゃ回すします悲笑…。
それが大事なのかもと思いました。車輪の再開発ということですが、このくらいなら無駄ではなく、むしろ頭の訓練としていい刺激になる気がします。
書いてみると、やり方は決まっていなくて、同じ結果を出すのにいくつか思いつきました。下記はそのうちの一つです。
【Rubyコード】
require "pp"
=begin
考え方としては3つの配列を作って、new_arrayにぶっこむ。
3つになったら拒否する。次の配列を作る。
値がなくなったら、nilしてbreakする?
とにかく3つずつ分けるという考え方ではなく、3つ詰め込んで拒否ってnew_aarayに追加
という感じでやってみる!
まだやってないけど、入れ子になるっぽいな…入れ子苦手。
いやならないかもな。考え方は人それぞれか。
「3つになったら追加、3つになったら追加…」?
=end
new_array = []
kari_array = []
array = ["a", "b", "c", "d", "e", "f", "g", "h",]
=begin
#これだと[["a", "b", "c"], ["d", "e", "f"]]が出力になります。
#gとhはkari_arrayに入ったあとに行き場がない状態です。
array.each do |x|
#3つのデータがある配列を作る。
unless kari_array.length == 3
kari_array << x
else #kari_arrayが3つになら…
new_array << kari_array
kari_array = []
kari_array << x
end
end
pp new_array
=end
puts "gとh、すなわちeachの最終後始末が必要です。"
puts "とりあえずインデックス番号をとって、利用してみる"
array.each.with_index do |x, i|
#3つのデータがある配列を作る。
#unlessにはelsif的なものがないと判明。確かにいままで短いRuby人生で見たことないかも、elsunless笑。
if kari_array.length != 5
if array[-1] == array[i] #最終処理, またnilを入れるといいかも?
kari_array << x
#kari_array << [x, nil]
#kari_array.flatten!
new_array << kari_array
else
kari_array << x
end
else
new_array << kari_array
kari_array = []
kari_array << x
end
end
pp new_array
puts "これはeach_slice"
array.each_slice(5) do |x|
p x
end
#new_array = [["a", "b", "c"], ["d", "e", "f"], ["g", "h", ""]]
each_slice(i)と同じように使用頻度が低いzipメソッドも丸暗記と覚悟していたが、「考え方を作ってみる」ことにしました。
というより、「自作each_slice()」作っているときに思いついたんですが。
といことでzipメソッドも作ってみました。↓