「WSOFTScriptからの移行」の版間の差分

編集の要約なし
編集の要約なし
37行目: 37行目:
  import “Alice.IO”;
  import “Alice.IO”;
  file_write_text(“test.txt”,”Hello,World”);
  file_write_text(“test.txt”,”Hello,World”);
注目すべき唯一の違いは、
注目すべき唯一の違いは、関数の呼出前に[[Import]]関数が呼び出されていることです。<code>import</code>は、<code>Alice.IO</code>名前空間からファイルやディレクトリの入出力についての関数群を読み込むことを事前に宣言します。これが、WSOFTScriptでも関数表現<code>import(“WSOFTScript.Shangrila”);</code>や、フラグ表現<code>[Import:”WSOFTScript.Shangrila”]</code>と決定的に異なる点は、<code>import</code>がファイルを読み込むのではなく、すでに読み込まれたライブラリから名前空間を使用可能なように読み込む点です。
 
ところで、AliceScriptにはWSOFTScriptに実装されているようなフラグ機能はありません。インタプリタに事前に報告すべき情報がある場合は、<code>Alice.Interpreter</code>名前空間にある関数を呼び出して代用します。例えば、次のフラグの機能を、AliceScriptで表現することを考えます。
[DllImport:”Library.dll”]
このフラグは、AliceScriptで特定の.NETライブラリを読み込むフラグです。これをAliceScriptで表現するには次のコードに置き換えます。
Dllimport(“Library.dll”);
また、標準出力から発生する出力を抑制したいとき、WSOFTScriptではCanPrintフラグを使用していました。これと同じように動作するコードをAliceScriptで表現すると、次のようになります。
import “Alice.Interpreter”;
Interpreter_AllowOutput(false);
さらに、AliceScriptの関数には、オーバーライドという概念が導入されています。この概念によって原則同じ関数を複数回定義することはできません。同じ関数を複数回定義されることが予想される場合は事前に<code>virtual</code>属性を付与することを検討してください。また、属性の付与された関数を上書きする場合には、<code>override</code>属性を付与します。次に例を示します。
function virtual Func()
{
  print(“Hello”);
}
Func();//出力:Hello
function override Func()
{
  print(“World”);
}
Func();//出力:World
また、AliceScriptの関数は可変長個の引数を受け取ることができる、<code>parms</code>パラメータをサポートしています。これは、その関数に幾つでも引数を渡すことが可能であることを表しています。次に例を示します。
function Func(parms args)
{
  print(args);
}
print(“A”,”B”,”C”);//出力:[“A”,”B”,”C”]
関数について詳しくは、[[関数]]も参照してください。