読者です 読者をやめる 読者になる 読者になる

methaneのブログ

このブログに乗せているサンプルコードはすべてNYSLです。

戻り値は何故一つ?

もう鎮火した騒ぎの中から、ネタを拾ってくる。
http://d.hatena.ne.jp/pmoky/20060514

pmokyさんの意見は、極端に言えば「C#は例外使ったら良いんだから、関数のOutputをout属性の変数にするのは邪道だ!」という感じの話。

エラー値と戻り値1つだけのときはそれでも良い。でも、プログラムの関数は数学の関数とは違う。戻り値が無いこともあれば、複数あることだってある。そのとき、JavaC#流の代表的な回答は、「戻り値のセットを一つのクラスとする」だと思う。

でも、僕はPythonのように複数の戻り値を許容する*1方が、綺麗さと簡潔さのバランスがとれていて好きだ。

  #複数の戻り値を返す。
  a, b, c = foobar( x, y, z )

*1:実際には、タプルというリストのようなモノに入れて返すんだけど