naruseです。

Toshiyuki Ogura さんは書きました:
> hash = {"x" => 1, "y" => 0, "z" => 2}
> p hash.sort{|a,b|
>   a[1] <=> b[1]
> }
> 
> というコードを実行すると、
> [["y", 0], ["x", 1], ["z", 2]]
> という結果になりますが、a, bは何を指しているのでしょうか。
hash をソートする際は、hash を一度 array に変換しています。
{"x" => 1, "y" => 0, "z" => 2} でしたら、
[["x", 1], ["y", 0], ["z", 2]] のような array に。
これへの sort と同じ事が起きます。

> また、ハッシュでなく配列に対してsort{|a,b| ... }したときは、a,bは何を指
> すのでしょうか。
array の sort の場合は、配列の要素の並び替えになります。
なので、a, b には配列のある要素が入ります。
[1, 2, 3, 4, 5] のような array ならば、
1 か 2 か 3 か 4 か 5 が、
[["x", 1], ["y", 0], ["z", 2]] のような array ならば、
["x", 1] か ["y", 0] か ["z", 2] が入ります。

> 配列の場合の簡単なコードの例も知りたいのですが、どこで見られますでしょう
> か。
マニュアルー・・・にはないんですね。
http://www.namaraii.com/rubytips/?%C7%DB%CE%F3#l14 逆引きRuby
あたりでどうでしょう。

-- 
NARUSE, Yui  <naruse / airemix.com>
DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA