プロが教えるわが家の防犯対策術!

selectの意味

リファレンスマニュアルと本のselectの説明がわかりません。
説明の文はなんとかわかるのですが、引数のとり方が「reads[, writes[, excepts[, timeout]]]」となっていて、これは 3 要素の配列を返しているように見えないので、混乱します。「reads[, writes[], excepts[], timeout[]」という書き方なら3 要素の配列を返していると納得できるのですが、ここで返しているのはreadsの中にwritesがあり、更にその中にtimeoutがある配列を返しているんでしょうか?

手元の本に「selectはリクエストを受信すると、リクエストを検出したソケットだけをリストに返します。」とあるのですが、ここで言うソケットとは入力、出力、例外を指していて、リストというのはつまり配列のことなんでしょうか?

A 回答 (4件)

a = hoge.select(ARGS)



の場合に、ARGSの部分が引数です。
ここは、「reads[, writes[, excepts[, timeout]]]」とかかれているので
以下の4種類の書き方ができます。
hoge.select(reads, writes, excepts, timeout)
hoge.select(reads, writes, excepts)
hoge.select(reads, writes)
hoge.select(reads)

また、aに代入される値が戻り値です。
ここには、
「戻り値は、timeout した時には nil を、そうでないときは 3 要素の配列を返し、その各要素が入力/出力/例外待ちのオブジェクトの配列です(指定した配列のサブセット)」
と書かれているので
nil 若しくは [???,???,???]の形で値が代入されます。

これでご理解いただけるのではないでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
まさに私が探していた回答です。

自分の国語力のなさを痛感しています。

ギャスケットの質問をした際、siffon9さんにアドバイスをいただいて、「たのしいRuby」を2回読みましたが、あと3回読もうと思います。

お礼日時:2010/07/07 14:54

ん~, ごめん, 何をどう勘違いしているのか想像できない....


「引数のとりかた」と「返り値」とは無関係だって, #2 に書かれてるよね. それなのに, なんで「[???[???[???]]]という返し方」と思えてしまうのか....
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
本当におっしゃるとおりです。

お礼日時:2010/07/07 14:48

引数の記述は、引数の型(クラス)を表していません。

どのクラスのオブジェクトを引数に渡して良いかは、その下の文章で書いてあります。

#1の方の回答の通り、引数の欄に書いてある [ ] は、配列表記とは無関係で、省略可能を意味します。

また、メソッドの引数のクラスと、メソッドの返値のクラスは無関係で、返値がどのような値・クラスであるかは、下の文章に書いてあります。

>戻り値は、timeout した時には nil を、そうでないときは 3 要素の配列を返し、その各要素が入力/出力/例外待ちのオブジェクトの配列です(指定した配列のサブセット)。

という文章を見れば、3要素の配列を返すことはすぐにわかります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>戻り値は、timeout した時には nil を、そうでないときは 3 要素の配列を返し、その各要素が入力/出力/例外待ちのオブジェクトの配列です(指定した配列のサブセット)。

上の文章はわかるのですが、私の中で、3つの要素を返すといえば、[???,???,???]みたいなのをイメージしています。[???[???[???]]]という返し方でも3つの要素と言うのですか?

お礼日時:2010/07/06 22:03

ここの [...] は「省略できる」ことを表しているはず.

    • good
    • 0
この回答へのお礼

回答ありがとうございます。
つまり、配列の要素であるreadsの要素として、writesがあり、writesの要素としてexceptsがある。そして、writes以下は省略が可能であるという理解でよいのでしょうか?

お礼日時:2010/07/06 21:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!