MATLABで参照型
MATLAB は参照を持たないため、オープンハッシュテーブル、線形リスト、木構造やその他計算機科学で一般的に用いられる間接参照を含むデータ構造を実装するのは困難である。
http://ja.wikipedia.org/wiki/MATLAB
なんて書いてあるけど,実はMATLABにも参照型は存在するらしい.クラスを「ハンドルクラス」として定義すると,そのクラスのオブジェクトは参照型になるとか.
以下コード例.「handle」クラスを継承したクラスは「ハンドルクラス」になります (紛らわしい).つまり以下のcounterクラスのインスタンスは参照型.
classdef counter < handle properties (GetAccess=public, SetAccess=private) count = 0 end methods function incr(obj) obj.count = obj.count + 1; end end end c = counter c.count % => 0 c.incr c.count % => 1
なんだかとっても謎仕様.とはいえ,参照型が使えるようになったことで,リンクリストとかのデータ構造を定義したり,オブジェクトのプロパティを動的に書き換えたりできるようになるので,なにかとうれしい.値を書き換えるたびにオブジェクトをコピーするのと比較して,動作速度も速くなるんじゃないかな.
しっかし,関数型言語でもないのにオブジェクトは基本的にイミュータブルとか,あらためて考えると割ととんでもない仕様だなw