2006-09-01から1ヶ月間の記事一覧
昨日のCarクラスを継承したSuperCarクラスを定義します SuperCar : class extends Car{ // アクセルを踏む関数をオーバーライドする step_on_accelerator : method(power){ // Carクラスのstep_on_acceleratorメソッドを呼び出す Car::step_on_accelerator(p…
Xtalはクラスベースを採用しています。 当初はプロトタイプベースを採用していましたが、プロトタイプベースであることの利点があまり思いつかないことや、 世の中のプロトタイプベースな言語、例えばJavaScriptやLuaでは、結局クラスもどきライブラリが何個…
Xtalは当然のように配列と連想配列リテラルを書くことができる。 ary : [1, 2, "foo", 5.6]; // 配列リテラル map : ["key":100, "test":"BOO"]; // 連想配列リテラル println(ary[2]); // foo println(map["test"]); BOO
Xtalでは関数定義と似たような形でfiberが生成でき、関数呼び出しの形で実行が出来ます。 fib : fiber{ yield 1; yield 2; yield 3; } println(fib()); // 1 println(fib()); // 2 println(fib()); // 3また、fiberはイテレータでもあるので、ブロックの適用…
Xtalでは変数を次の形で定義します。 variable_name : 100;変数名 : 初期値; という形です。 Xtalでは fun(){} という形で関数式が書けます。 ECMAScriptの function(){} と同じです。 functionは長ったらしいのでfunを採用しました。それを変数に定義すれば…
Xtalはセレクターネームスペースっぽい機能を有します。セレクターネームスペースを採用している言語としては、例えばECMAScript4があります。 Xtalではセレクターネームスペースというより、識別子となんらかのオブジェクト、二つのキーでメソッドを登録す…
XtalはまるでRubyのような書式で配列の要素を順次取り出すことが出来ます。例えば次のように。 // 変数arrayを定義。初期値に配列を。 array : [10, 20, 30, 40]; array.each{ |value| println(value); }このようにぱっと見はRubyにしか見えません。しかし、…
Xtalは、主にゲーム製作用途のために、C++に組み込み、連携させて使うために開発された言語です。 この言語はRuby, Python, D, Lua, NewtonScript, ECMAScript等、とても多くの言語の影響を受けて作られました。特徴 オブジェクト指向 C likeな構文 動的な型…
0〜9までの数字を表示するXtalのプログラムは次の通り 10.times{ |i| println(i); }もうほとんどRubyですね。 これをC++風のforループで書くと次の通り。 for(i : 0; i<10; ++i){ println(i); }さっきのとまったく同じ出力をします。
多分邪道ではあるのですが、簡単に組み込めるよう、all_src.hという、全てのcppをincludeしたヘッダが用意されてます。 これをどれか一つのcppにincludeすれば、簡単に組み込みを試すことが出来ます。 #include <iostream> #include <xtal/all_src.h> using namespace xtal; // Xtalの</xtal/all_src.h></iostream>…
Xtalのソースをダウンロード VC7とgcc version 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125)でコンパイルできました。簡単なリファレンス ここに書かれてない機能が結構あります。今後頑張ってリファレンス書かないと。
C++から簡単に使えるスクリプト言語。言語仕様は、これはまるでRuby++だ!と誰かが呼んでくれるようなモノを目指しました。 例えばRubyが将来取り入れようとしている機能を取り入れてます。 セレクターネームスペース キーワード引数 仮想マシン駆動 配列で…
題名の通り