最近のキーワード

2006年07月14日

多値とArray

やっぱり、多値をArrayで表そうとするのは苦しいと思う。 少なくとも内部表現としては、Arrayを継承したValuesなどのクラスを作るか、あるいは、全く別物のクラスを作るほうが混乱が少ないと思う。 例えば、*[a,b,...,z]によって多値を表すオブジェクトが作られる。また、メソッド引数の組み合わせはそもそも多値として表現される。そして、多値は決して変数には代入されないようにするために、代入時に多値を変換する。 a = values なら、aはvaluesの最初の要素に。 一方、a = array の場合(arrayは配列)は、a が配列になればよい。 *a = obj なら a = obj.to_ary と見なす。 a,*b = values なら、aにvaluesの最初の要素を、残りを*b=values[1..-1]として解釈する。a,*b = arrayというものは、この規則に従うと、aにarrayが代入されるか、あるいはエラーだろう。従来のような動作を期待するには、a,*b = *array としてもらうか、MLのパターンマッチングのようなものを新たに導入する。 まだ一貫するには欠けているものがあるし、既存との互換性は確保できないが、混乱するよりはいい。
posted by ttate at 21:14| 🌁| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。