[ 編集このページを編集する ]

トップ > MAP作成 > トリガーエディタ > Jass Script > Jass講座 > function



functionとは関数を指す。Jass Scriptでは、戻り値を持つ関数も持たない関数もすべてfunctionで定義される。

複数回行う処理をひとつのfunctionにまとめておけば便利。普通、これをどんどん作っていく。

Jass NewGenの導入が前提です。導入せずとも利用できる内容も一部ありますが、あったほうが断然有利です。



使い方

functionは、以下のように定義される。

    function HelloWorld takes nothing returns nothing

        call DisplayTextToPlayer(GetLocalPlayer(),0,0,"Hello, world!")

    endfunction

定義された関数は、以下のようにしていつでも呼び出すことができる。

    call HelloWorld()

注意点

カスタムスクリプトで作成されたJass Scriptは、最終的にひとつのテキストファイルにまとめられる。

このとき、テキストの下部で定義したfunctionは、それより上部でcallすることができない

以下のスクリプトの場合、エラーが出る。

    function initGame takes nothing returns nothing
    
        call CantCallMe()

    endfunction
    function CantCallMe takes nothing returns nothing
        //この関数は initGame より下流に位置するので、
        //initGame内から call することはできない。
        //この例のように記載すると、MAP保存時にエラーが出て、保存できない。
    endfunction
    

ひとつのページ内であれば注意して防げる問題ではあるが、複数のページにわたって呼び出されることのある function を作成する場合は、MAP保存時にどのページが上にくるかによってエラーが出るかどうかが変わる。

複数のページで利用する関数を定義する場合は、library を利用すると便利。

引数

takes 〜 returns の間に、変数型 '変数名', 変数型 '変数名', .... の書式で記入する。

記入例:

    function HelloWorldtoPlayer takes player whichPlayer returns nothing

        call DisplayTextToPlayer(whichPlayer,0,0,"Hello, world!")

    endfunction

戻り値

returns 〜 に、変数型で記入。returnの位置で関数の処理は終了し、指定された形を返す。

例:

    function GetMessage takes nothing returns string

        return "Hello, world!"
         
    endfunction

    function HelloWorldtoPlayer takes player whichPlayer returns nothing

        call DisplayTextToPlayer(whichPlayer,0,0,GetMessage())

    endfunction