笠原です。こんにちは。

* From: matz / netlab.co.jp (Yukihiro Matsumoto)
* Date: Fri, 9 Oct 1998 14:59:39 +0900

> そうですねえ.将来のリファレンス本のためにとっておいてある,
> なんていうとちょっとアコギな印象を与えますかね.おいおい追加
> してるんですが,こういうのは後回しになることが多くて.
> 
> Ruby本体と同じでどしどし指摘して下さると改善されてくと思いま
> すです.

私のぶしつけな質問に丁寧に答えてくださってありがとうございます。(これま
た失礼ですが) 安心しました。これから、少し積極的に Ruby を使っていくこ
とにします。

# 私もプログラミングは好きですが、ドキュメントはいつも嫌々書いてます。

とりあえず、抽象的な指摘ばかりではなんですので、よく使う Array クラス
のマニュアル (Array.html) について、気が付いたことを並べてみました。参
考にして頂ければ、幸いです。(英文の方はご勘弁下さい。^^;)

----------------------------------------------------------------------
self[nth]
	変更: 「取り出します」→「返します」
		「取り出す」だと、その部分が削除されてしまうような。
	追加: 「nth 番目の要素が配列にないときは、nil を返します。」

self[start..end]
self[start, length]
	追加: 「配列にない要素は無視され、メソッドが返す配列には含まれ
		ません。」 (すみません。うまく説明できている気がしませ
		んが、例を挙げます。)

		$a = ['a', 'b', 'c']
		$b = $a[1..4]     # $b の内容は ['b', 'c']
		$b = $a[7..9]     # $b の内容は []

	追加: 「srart が負の整数で end に 0 あるいは正の整数を指定した
		ときは、メソッドは空の配列を返します。」

self[nth] = val
	変更: 「要素を val に変更します」→「val に設定します」or 「セッ
		トします」or 「代入します」
		要素 nth は元の配列に無くてもいいので、「変更」とはし
		ない方がいいと思います。

	追加: 「元の配列の範囲を越えるような代入を行った場合、配列は自
		動的に拡張されます。拡張されたものの代入されなかった要
		素の値は nil になります。」

		$a = ['a', 'b']
		$a[3] = 'd'       # $a の内容は ['a', 'b', nil, 'd']

self[start..end] = val
self[start, length] = val
	追加: 「配列にない要素は無視され、メソッドが返す配列には含まれ
		ません。」

	追加: 「0 あるいは正の整数を指定したときは、メソッドは空の配列
		を返します。」

	[....] で指定している個数と配列 val の要素数が合わなかったとき
	については例に書いてありますが、明文化してはいかがでしょう。

self <=> other
	変更: 「selfとotherの内容を〜」→「selfとotherの要素を〜」
	追加: 「各要素が等しいまま一方だけ配列の末尾に達したときは、末
		尾に達したのが self なら正、other なら負の整数を返しま
		す。」

delete(val)
	見出しは
		delete(val)
		delete(val) {...}
	の両方を併記してはいかがでしょう。

delete_at(pos)
	追加:「要素 pos が配列に無いときは何もせず、nil を返します。」

fill(val, start[, length])
fill(val, start..end)
	追加: 「srart が負の整数で end に 0 あるいは正の整数を指定した
		ときは、配列は変更されません。」

	追加: 「拡張されたものの代入されなかった要素の値は nil になり
		ます。」

filter{|item| ..}
	変更: 「配列の各要素内容をイテレータを評価した値に」→
		「配列の各要素内容を、イテレータを評価した値に」

		(「〜を〜を」と続いているので、すこしだけ読みやすく。)

indexes(index_1,..., index_n)
indices(index_1,..., index_n)
	追加: 「配列にない要素は、指定しても無視されます。」

rassoc(value)
	assoc(key) の説明と同じ内容のように思われるのですが、どう違う
	のでしょうか?

reverse_each
	見出しは正しくは `reverse_each {...}' ではないでしょうか。

shift
	変更: 「配列の先頭の要素を取り除いて,それを返します」→
	      「配列の先頭の要素を取り除き、その取り除いた要素を返しま
		す」
		元の文は、取り除かれた配列の方が返るようにもとれます。

	追加: 「要素がない時は何もせず、nil を返します」

uniq
uniq!
	追加: 「重複した要素は、2 度目以降に現れたはものがすべて取り除
		かれます。取り除かれた要素よりも後の部分が、前に詰めら
		れます。」

		UNIX の uniq コマンドを知っていれば感覚的に分かるので
		すが、Ruby だと要素が隣接している必要はないのですね。

unshift(obj)
	追加:「残りの要素はひとつずつ後ろにずれます。obj を返します。」
______________________________________________________________________
                                          笠原 基之(かさはら もとゆき)