編集の要約なし
編集の要約なし
 
(同じ利用者による、間の4版が非表示)
1行目: 1行目:
{{Alert|この記事のより新しい版が[https://docs.wsoft.ws/products/alice/api/alice/function/ WSOFTDocs]にあります。AliceScriptWikiでは、この記事はもう更新されません。||04}}
関数は、一連のステートメントが含まれているコードの集まりです。必要な引数を指定してプログラムから関数を呼び出すと、関数内のステートメントが実行されます。
関数は、一連のステートメントが含まれているコードの集まりです。必要な引数を指定してプログラムから関数を呼び出すと、関数内のステートメントが実行されます。
[[Category:基本]][[Category:Alice(名前空間)]]
[[Category:基本]][[Category:Alice(名前空間)]]
18行目: 19行目:


=基本=
=基本=
関数は、クラスや名前空間内外で修飾子(<code>override</code>や<code>virtual</code>など)、関数の名前および引数を指定して宣言されます。
関数は、クラスやスコープ内で修飾子(<code>override</code>や<code>virtual</code>など)、関数の名前および引数を指定して宣言されます。


引数はかっこで囲み、各引数をコンマで区切ります。括弧内を空にすると、関数で引数が不要なことを意味します。
引数はかっこで囲み、各引数をコンマで区切ります。括弧内を空にすると、関数で引数が不要なことを意味します。
123行目: 124行目:
登録したい引数の型指定修飾子を<code>this</code>キーワードの後に記述します。これを省略すると、<code>variable</code>型に登録されます。複数の<code>this</code>キーワードを使用することはできません。拡張メソッドには<code>virtual</code>属性および<code>override</code>属性を付与することもできます。標準の型メソッドのオーバーライド可否については[[変数]]を参照してください。
登録したい引数の型指定修飾子を<code>this</code>キーワードの後に記述します。これを省略すると、<code>variable</code>型に登録されます。複数の<code>this</code>キーワードを使用することはできません。拡張メソッドには<code>virtual</code>属性および<code>override</code>属性を付与することもできます。標準の型メソッドのオーバーライド可否については[[変数]]を参照してください。
=デリゲートへの暗黙的な変換=
=デリゲートへの暗黙的な変換=
ユーザー定義関数は、デリゲート型の変数へと暗黙的に変換できます。ユーザー定義関数を丸括弧なしで呼び出すと、それはその関数をデリゲート型に変換されたオペランドと認識されます。次に例を示します。
ほとんどのネイティブ関数とユーザー定義関数は、[[デリゲート]]型の変数へと暗黙的に変換できます。ユーザー定義関数を丸括弧なしで呼び出すと、それはその関数をデリゲート型に変換されたオペランドと認識されます。次に例を示します。
  function SayHello()
  function SayHello()
   {
   {
130行目: 131行目:
  var hello=SayHello;//helloは、DELEGATE型を表します
  var hello=SayHello;//helloは、DELEGATE型を表します
  hello();//出力:Hello,World
  hello();//出力:Hello,World
ただし、以下の属性を持っている関数を暗黙的に変換することはできません。
*言語構造
*関数の区切り文字の空白をサポート
*単一の引数のみ関数の区切り文字の空白をサポート
また、FunctionBase型を継承しない関数も、この機能をサポートしません。
=属性=
=属性=
AliceScriptではさまざまな機能や構造が関数で設計されているため、必要に応じて関数に特別な機能を持たせることが可能です。属性の一覧を以下に示します。
AliceScriptではさまざまな機能や構造が関数で設計されているため、必要に応じて関数に特別な機能を持たせることが可能です。属性の一覧を以下に示します。