yucken の業務上電脳 Tips 日記、なのだよ。-弐式-

いまさら電脳 Tips といふものを、書いてみむとして、するなり.元々は広い意味での電脳(コンピュータ)の Tips を書いていたのですが,いつのまにか,解析ツールの「電脳 ruby」と IDL の Tips がメインに (・)>

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 判定するようです。