配列クラス.配列の要素は任意のRubyオブジェクトです.配列は一 般的には配列式:
で生成されます.[1, 2, 3]
Object
Array[item...]
引数を要素として持つ配列を生成します.
new([size[, val]])
配列を生成します.sizeを指定したときにはその大き
さの配列を生成します.valを指定したときには内容を
その値で初期化します.valのデフォルトはnil
です.
self[nth]
nth番目の要素を返します.先頭の要素が0番目になり
ます.nthの値が負の時には末尾からのインデックスと
見倣します(末尾の要素が -1 番目).nth番目の要素が
存在しない時にはnil
を返します.
self[start..end]
start番目の要素からend番目の要素までの
部分配列を返します.startの値が負の時には末尾からのインデックスと
見倣します(末尾の要素が -1 番目).startの値が配列の範囲に
収まらない場合nil
を返します.endの値が
配列の長さを越える時には,越えた分の長さは無視されます.
また,範囲の始点が終点よりも大きい時にはnilを返します.
self[start, length]
start番目からlength個の要素を含 む部分配列を返します.startの値が負の時には末尾からのインデックスと 見倣します(末尾の要素が -1 番目).lengthがstart 番目からの配列の長さより長い時には,越えた分の長さは無視され ます.lengthが負の時にはnilを返します.
self[nth] = val
nth番目の要素をvalに設定します.
nthが配列の範囲を越える時には配列が自動的に拡張さ
れます.拡張されたものの代入されなかった要素は nil
に初期化されます.
self[start..end] = val
start番目の要素からend番目の要素までを
配列valの内容に置換します.valの値が配
列でないときにはto_a
メソッドを使って配列に変換
します.valの要素の数の方が多い時には,後ろの要素
がずれます.
self[start, length] = val
start番目からlength個の要素を配列
valの内容で置き換えます.valが配列でな
いときにはto_a
メソッドを使って配列に変換します.
valの要素の数の方が多い時には,後ろの要素がずれま
す.ですから,lengthが0の時にはインデックス直前の
位置への挿入になります.
例:
ary = [1, 2, 3, 4, 5] ary[0..2] = [0, 0] # 配列の内容は [0, 0, 4, 5] ary[1, 0] = [7] # 配列の内容は [0, 7, 0, 4, 5]
self + other
配列の連結を行います.self
とotherの
両方の配列の内容を繋げた新しい配列を返します.
self * times
配列の繰り返し.
self - other
集合の差演算.self
からotherの要素を
取り除いた内容の新しい配列を返します.重複する要素取り除かれ
ます.
self & other
集合の積演算.両方の配列に含まれる要素からなる新しい配列を返 します.重複する要素は取り除かれます.
self | other
集合の和演算.両方の配列にいずれかに含まれる要素を全て含む新し い配列を返します.重複する要素は取り除かれます.
self << obj
objを配列の末尾に追加します.このメソッドは配列そのものを返 すので,以下のように連鎖できます.
array << obj1 << obj2
この場合arrayには[obj1, obj2]が追加されます.
self <=> other
self
とother
の各要素をそれぞれ順に
<=>
で比較して,self
が大きい
時に正,等しい時に0,小さい時に負の整数を返します.各要素が
等しいまま,一方だけ配列の末尾に達した時は,より短い配列の方
が大きいとみなします.
assoc(key)
配列の配列を検索して,その0番目の要素がkeyに等しいもの
を返します.比較は==
演算子を使って行われます.
a = [[1,2],[2,4],[3,6]] a.assoc(2) # => [2, 4]
clear
配列の大きさを0にします.
concat(other)
配列otherの要素を配列の末尾に(破壊的に)追加します. otherが配列でない時には変換されます.
compact
compact!
配列からnil
を取り除きます.
compact!
は削除を破壊的に行います.
delete(val)
delete(val){ ... }
配列から要素valを削除します.ブロックを指定して呼 び出された時には,削除する要素がなかった時にブロックを評価し ます.
delete_at(pos)
posで指定された位置にある要素を取り除きます.取り
除かれた要素を返します.取り除く要素が存在しない時には
nil
を返します.
delete_if {|x|...}
reject!{|x|...}
要素に対してブロックを評価し,ブロックが真を返した要素を削除 します.
clone
dup
レシーバと同じ内容を持つ新しい配列を返します.フリーズした配
列のclone
は同様にフリーズされた配列を返しますが,
dup
は内容の等しいフリーズされていない配列を返し
ます.
each {...}
各要素に対してブロックを評価します.
each_index {...}
各要素のインデックスに対してブロックを評価します.
つまり,(0..(ary.size-1)).each {}
と同じです.
empty?
配列が空の時真を返します.
fill(val)
fill(val, start[, length])
fill(val, start..end)
配列(の指定された部分)の要素の値をvalに設定します.
2番めの形式でlengthが省略された時は配列の終りまで
の長さを意味します.指定された部分配列が元の配列の範囲を越え
る時は自動的に拡張され,拡張された部分はnil
に初
期化されます.
filter{|item| ..}
配列の各要素内容を,その要素を引数にしてブロックを評価した値 に置き換えます.
flatten
flatten!
ネストした配列を平滑化します.flatten!
は配列を
破壊的に平滑化しますが,配列がネストしていないときには
nil
を返します.
freeze
配列の内容の変更を禁止します.
frozen?
配列の内容の更新が禁止されている時真を返します.
include?(val)
配列がvalと等しい要素を持つ時に真を返します.
index(val)
valと等しい最初の要素の位置を返します.等しい要素
がひとつもなかった時にはnil
を返します.
indexes(index_1,..., index_n)
indices(index_1,..., index_n)
各引数の値をインデックスとする要素の配列を返します.配列に含 まれない要素が指定されても無視されます.
join([sep])
配列の要素をsepを間に挟んで連結した文字列を返しま
す.sepが省略された場合には変数$,
の値が使われます.
length
size
配列の長さを返します.
nitems
nil
でない要素の数を返します.
pack(template)
配列の内容をtemplateで指定された文字列にしたがっ
て,バイナリとしてパックした文字列を返します.テンプレートは
型指定文字列とその長さ(省略時は1)を並べたものです.長さとし
て*
が指定された時は「残りのデータ全て」の長さを
表します.型指定文字は以下の通りです.
a
- ASCII文字列(nullを詰める)
A
- ASCII文字列(スペースを詰める)
b
- ビットストリング(下位ビットから上位ビット)
B
- ビットストリング(上位ビットから下位ビット)
h
- 16進文字列(下位ニブルが先)
H
- 16進文字列(上位ニブルが先)
c
- char
C
- unsigned char
s
- short
S
- unsigned short
i
- int
I
- unsigned int
l
- long
L
- unsigned long
m
- base64された文字列
n
- ネットワークバイトオーダーのshort
N
- ネットワークバイトオーダーのlong
v
- "VAX"バイトオーダー(リトルエンディアン)のshort
V
- "VAX"バイトオーダー(リトルエンディアン)のlong
f
- 単精度浮動小数点数(機種依存)
d
- 倍精度浮動小数点数(機種依存)
p
- ナル終端の文字列へのポインタ
P
- 構造体(固定長文字列)へのポインタ
u
- uuencodedされた文字列
x
- ナルバイト
X
- 1バイト後退
@
- 絶対位置への移動
pop
配列の末尾の要素を取り除いて,それを返します.要素がない時に
はnil
を返します.
push(obj...)
objを配列の末尾に追加します.
rassoc(value)
配列の配列を検索して,その1番目の要素がvalueに等しいもの
を返します.比較は==
演算子を使って行われます.
a = [[1,2],[2,4],[3,6]] a.rassoc(2) # => [1, 2]
replace(other)
配列の内容をotherの内容で置き換えます.
reverse
reverse!
reverse
は全ての要素を逆順に並べた配列を返します.
reverse!
は配列の要素を逆順に(破壊的に)並べ替えます.
reverse_each {...}
各要素に対して逆順にブロックを評価します.
rindex(val)
valと等しい最後の要素の位置を返します.等しい要素
がひとつもなかった時にはnil
を返します.
shift
配列の先頭の要素を取り除き,取り除かれた要素を返します.残り
の要素はひとつずつ前に詰められます.空配列に対しては
nil
を返します.
sort
sort!
sort {|a, b|...}
sort! {|a, b|...}
配列の内容をソートします.ブロックを与えて呼び出された時には
ブロックを2引数を与えて評価し,その結果で比較します.
ブロックがない時には<=>
演算子を使って
比較します.sort
はソートされた新しい配列を返し,
sort!
は配列の内容をその場でソートします.
uniq
uniq!
配列から重複した要素を取り除きます.取り除かれた要素の部分は
前に詰められます.uniq!
は削除を破壊的に行います.
unshift(obj)
objを配列の先頭に追加します.各要素はひとつずつ後 ろにずれます.