Ruby: Array クラス
電脳 Ruby を使って解析をしているので、Ruby 本来の Array を使うことはあまりないのですが、NArray などと組み合わせて使うと結構便利なのが分かってきたので、自分が使ってみたメソッドを中心にメモしていきます。なお、[破] を付けたのは破壊的メソッド、[保] を付けたのは非破壊的メソッド (なんとなく "保存的" と言い換えた方がいいかなあと思ったので [保] ) です。
[保] + (Array#+) 非破壊で複数の配列を連結する。
chuunibyo = [ "mami" ] chuuichi = [ "sayasaya", "megamado", "homuhomu" ] kuukai = [ "anko" ] a = chuunibyo + kuukai + chuuichi p a ["mami", "anko", "sayasaya", "megamado", "homuhomu"] => nil
[破] unshift, push, insert 配列への要素追加
これらは破壊的メソッドなので元の配列を保持しつつ要素を配列先頭や末尾に加えたい時は上の + メソッドを使うしかないようです…。
a = ["mami", "anko", "homuhomu"] a.shift # mamirareta p a ["anko", "homuhomu"] => nil a.unshift( "sayaka" ) => ["sayaka", "anko", "homuhomu"] a.push( "madoka" ) => ["sayaka", "anko", "homuhomu", "madoka"] mahoshojo = [ "kyosuke" ] a.insert( 2, mahoshojo[ 0 ] ) p a ["sayaka", "anko", "kyosuke", "homuhomu", "madoka"] => nil
push で末尾に追加、unshift は先頭に追加。shift は先頭を削除するようです。insert はあまり使わないかな…私の場合。
配列同士の比較
a = ["mami", "anko", "sayasaya", "megamado", "homuhomu"] a1 = ["mami", "anko", "sayasaya", "megamado", "homuhomu", "shiroi-akuma"] a2 = ["mami", "anko", "sayasaya", "megamado", "homuhomu"] a == a1 => false a == a2 => true
似たようなものに equal? というメソッドがあるらしいのですが、こちらは中身が同じでもオブジェクトとしての id が違う場合は false 判定するようです。