module
Rubyのmoduleとほぼ同じモノがXtalにも存在します。
moduleはmix-inのため、または名前空間のように使うために存在します。
例:
JetEngine : module{ @power : 100; burst : method(){ this.step_on_accelerator(@power); @power = 0; } }
ジェットエンジンモジュールを定義しました。
これは定義先のクラスに超加速装置をMix-inするモジュールです。
Mix-inはmixinsキーワードを使って次のように書きます。
JetCar : class extends Car mixins JetEngine{ } jet_car : JetCar(); jet_car.burst(); println(jet_car.velocity); // 100
既に定義済みのクラスに対しMix-inすることも出来ます。
それにはClassクラスのメソッドincludeを使います。
Car.include(JetCar); car : Car(); car.burst(); println(car.velocity); // 100