多くのスクリプト言語では、1つの配列に異なる型のオブジェクトを格納することができます。同じようなことができました。このテクニックは基本的に使ってはいけません。各「書籍」のデータを表します。0番目の要素が「表題」、1番目の要素が「著者名」、2番目の要素が「価格」がそれぞれ格納されるという寸法。すべての書籍の著者名を出力するコードは次のようになります。b[1]}......最低ですね。(聡明なる読者諸兄は当然お気付きのことと思いますが)、インデクス値と要素に意味のある対応がないことです。このデータがメソッドの戻り値や引数にされたり、変数に代入されたりして、定義された場所から離れた場所で参照されるような場合、型による意味付けがなされなくなります。帰ってくるだけで、それ以外の配列オブジェクトと区別できなくなってしまいます。配列ではなくハッシュテーブルを使うとどうかと言えば、若干マシにはなるものの、本質的な「悪さ」は何も変わりません。なった分だけ、プログラムの可読性は向上しました。b[:title]}しかし、型というセマンティクスが利用できない状況に変わりはありません。帰ってくるだけで、それが「書籍」の情報を表すことを知る術はないのです。すればよいのかというと、話はあまりにも単純。「書籍」を表すクラスを定義すればよいだけです。書籍のデータであることが明確です。ものぐさ」なので、クラスを定義するわずかなタイプ数を惜しんで、先に上げたような保守性の悪いコードを書いてしまう傾向が見られます。代わりに使うのは愚かとしか言いようがありません。そのようなプログラムで「死ぬ」のが書いた本人ならまだ良いのですが、大抵の場合、被害を被るのはそのプログラムの保守運用を引き継がされる別のプログラマだったりするんですよね......。言うわけで、そんな迷惑なコードを書き散らす奴を見たときは、こってりとヤキをいれてやることにしています。