アカウント名:
パスワード:
Rubyのが一番お洒落でしょうね。 Class Objectのnewメソッドは、空っぽ(?)のオブジェクトを作ってから、 そのオブジェクトのinitializeメソッドを呼んであげる、っていうだけ。エレガントです。
CLOSもそうですね。newにあたるmake-instanceは クラスを取るメソッドで、それはクラスを引数に
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
物事のやり方は一つではない -- Perlな人
JavaScript (スコア:4, 参考になる)
Re:JavaScript (スコア:1)
確かに、class があるほうが分かりやすい気もするけど、個人的にはスクリプト言語としては、プロトタイプベースの方がすきかな。
use Test::More 'no_plan';
Re:JavaScript (スコア:2, 参考になる)
そのクラスの仕組みの導入の仕方が気になるところです。
そのURLを見ましたが、
new Classname(args)という、Java/C++系の文法を採用してるようですし、
>処理を戻す前に B のコンストラクタを呼び出さなければならない。この呼び出しは明示的なものでも暗黙のものでもよい。
とも書いてありますね。
で、俺にとってはこれがかなりカッタルク感じます。
同じクラスベースでも、SmalltalkやRubyのほうがエレガントだと思います。
というのは、あっちは、
○コンストラクタは、単に"インスタンスを作って
Re:JavaScript (スコア:0)
CLOSもそうですね。newにあたるmake-instanceは クラスを取るメソッドで、それはクラスを引数に
Re:JavaScript (スコア:1)
SIMULA 67 は new 時に引数として初期値を渡すスタイルで、別段、初期化用の
メソッド(仮想関数)が用意される様子は見られません。
Smalltalk-72 では、isnew というインスタンス化直後だけ真となるテストで
初期化を行なうようなしくみになっています。まだ空っぽのインスタンス
にメッセージを送信するようなスタイルにはなっていません。インスタンスが
インスタンス変数に値を未束縛の状態で存在できたかはちょっと微妙です。
それが可能ならば、後で初期化というスタイルもとることはできたでしょう。
Smalltalk-72 の影響を受けて LISP マシン LISP 用に作
Re:JavaScript (スコア:1)
>にメッセージを送信するようなスタイルにはなっていません。インスタンスが
>インスタンス変数に値を未束縛の状態で存在できたかはちょっと微妙です
「空っぽ」といっても、ここの一連の話では、
そのObject自体のBootstrapに必要な最低限の情報(クラスなどへの参照など)は
与えられた状態、を指すのだと思っていました。
クラスとかへの参照さえあれば、「そのObjectの」初期化メソッド
(メソッドの名はオヤクソクということにすれば充分)
を自然なかたちでCallできるわけで。
どうせ初期化時には、クラスなどの祖先情報と、引数で渡された情報と、しか
もらえないんだから。
逆にいえば、その限られた(?)情報を美味しく無駄なく活かすための
スタイルとして、今のあの方式に落ち着いたんだろうなと想像します。