[#43494] ブロックとともに呼び出されたsortについて — "Toshiyuki Ogura" <oguradio@...>

小倉です。

12 messages 2007/05/15

[#43508] rubyのテキストについて — 桑江 康公 <ykuwae@...>

はじめまして、桑江といいます。プログラム開発の勉強をはじめたいと考えています。いろいろと調べたのですが、オブジェクト指向を使った開発が現在しりゅうとのことで、Javaを勉強しようと考えていたのですが、rubyという言語もあるということがわかりネットで調べたところこのメーリングリストにたどり着きました。どなたかプログラム開発初心者でもわかりやすい本またはサイトがありましたら教えていただけないでしょうか?ちなみに、私のレベルはHTMLが少しわかる程度です。

8 messages 2007/05/15

[ruby-list:43495] Re: ブロックとともに呼び出されたsortについて

From: "NARUSE, Yui" <naruse@...>
Date: 2007-05-15 03:05:47 UTC
List: ruby-list #43495
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

In This Thread