クラスとデータ型を分離させてみた
シンプルなアイデアなので、ここにメモ。オブジェクト指向プログラミングのクラスと、データ型を分離させてみようという考えで、あまり、難しいことはしない
疑似コードで以下のとおり、書いてみた
疑似コード
class List (x) { getItem: Number -> x {...}, addItem: x -> this {...} } var StringList = new List(String); StringList obj; obj.addItem("hoge"); obj.getItem(0); //"hoge"を返す
上記のコードを説明すると、objはStringList型で、obj.getItem(0)で、String型の文字列"hoge"を返す。ただし、{...}は内部実装を省略したもの。本来はnewの時点で実装しないとまずい
今度は、String型ではなく、Number型を使って、NumberList型を生成してみよう
var NumberList = new List(Number); NumberList obj2; obj2.addItem(12); obj2.getItem(0); //12を返す
クラスの引数xには、Number型が入るので、addItemメソッドは「Number -> NumberList」型に、getItemメソッドは「Number -> Number」型となるわけ。かなり単純