編集の要約なし
 
(同じ利用者による、間の6版が非表示)
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>など)、関数の名前および引数を指定して宣言されます。


引数はかっこで囲み、各引数をコンマで区切ります。括弧内を空にすると、関数で引数が不要なことを意味します。
引数はかっこで囲み、各引数をコンマで区切ります。括弧内を空にすると、関数で引数が不要なことを意味します。
24行目: 25行目:
定義された関数は、関数の定義された後で使用できるようになります。
定義された関数は、関数の定義された後で使用できるようになります。


次の例には<code>SayHello</code>関数が定義されています。<code>SayHello</code>が呼び出されたとき、標準出力にHello,World!を書き込みます。
次の例には<code>SayHello</code>関数が定義されています。これをユーザー定義関数といいます。<code>SayHello</code>が呼び出されたとき、標準出力にHello,World!を書き込みます。


  function SayHello()
  function SayHello()
122行目: 123行目:
  print(text.WordCount());//出力例:3
  print(text.WordCount());//出力例:3
登録したい引数の型指定修飾子を<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()
  {
    print(“Hello,World”);
  }
var hello=SayHello;//helloは、DELEGATE型を表します
hello();//出力:Hello,World
ただし、以下の属性を持っている関数を暗黙的に変換することはできません。
*言語構造
*関数の区切り文字の空白をサポート
*単一の引数のみ関数の区切り文字の空白をサポート
また、FunctionBase型を継承しない関数も、この機能をサポートしません。


=属性=
=属性=