トップ  >  リファレンス  >  基本  >  関数
スポンサーリンク
検索
カスタム検索
リファレンスツリー
オススメ
関数


全てのタスクはサブタスクに分ける事が出来ます。
サブタスクは直接コードを書く事が出来ます、またはより小さいサブタスクに分ける事も出来ます。
関数はサブタスクのコードを書くために使われます。


書式:
関数ヘッダ {
    処理
}




最初の中括弧{}の前にある物は全て関数定義のヘッダです。
中括弧の中にあるのは関数の本体です。

関数ヘッダは、戻り値型、関数名(識別子)、仮引数を含みます。
関数の仮引数の数は制限されており、64個を超える事が出来ません。

関数は必要に応じて他プログラムから何度も呼び出す事が出来ます。
戻り値、関数名、仮引数の型は関数プロトタイプで構成されます。
関数プロトタイプは定義では無く、関数宣言です。

戻り値型、仮引数の型宣言によって、
関数呼び出しの時に厳しい型チェックと暗黙的キャストが行われます。
管理人の勝手なコメント:

#property strictを使用している場合、引数の型と一致しない値を渡した時にコンパイラが警告してくれます。

関数宣言はソースコードを分けて、ソースコードを読みやすくする為に使われます。
関数定義は正確に関数宣言に一致させる必要があります。

サンプルソース:
double                       // 戻り値型
sub_function                 // 関数名
(double a, double b)       // 仮引数
{
    double tmp_sum;
    
    tmp_sum = a + b;

    return (tmp_sum);           // 戻り値
}


return処理は、return文の式の値を返す事が出来ます。
必要に応じて、式の値は関数の戻り値型に変換する事が出来ます。

戻り値に使用出来るのは、基本的なデータ型単純な構造体オブジェクトポインタです。
配列・クラスオブジェクト・複雑な構造体は戻り値に使用する事は出来ません。



値を返さない関数は戻り値型をvoid型で宣言する必要があります。
サンプルソース:
void void_function(string in_str){       // 戻り値がvoid型の関数

    Print("仮引数データ" + in_str);

}

関数の仮引数はデフォルト値を持つ事が出来ます。
デフォルト値の定数は対応する型で定義する必要があります。

また、仮引数のいずれかにデフォルト値を設定した場合、それ以降の仮引数にもデフォルト値を設定しなければなりません。
サンプルソース:
int OnInit(){

    // デフォルト値が使用され "10.11仮引数"が表示される
    void_function();

    // 実引数の値が使用され "000無し"が表示される
    void_function(0,0,false,"無し");

    return 0;   
        
}

void void_function(
                   int      in_int      = 1,
                   double   in_double   = 0.1,
                   bool     in_bool     = true,
                   string   in_str      = "仮引数"
                   )
{
    Print( in_int , in_double , in_bool , in_str);
}


void void_function(
                   int      in_int      ,            // デフォルト値無し
                   double   in_double   = 0.1,       // デフォルト値設定
                   bool     in_bool     ,            // エラーになる。デフォルト値の設定が必要
                   string   in_str      = "仮引数"
                   )
{
    Print( in_int , in_double , in_bool , in_str);
}







セクション
関数の呼び出し
引数の値渡し
関数のオーバーロード
演算子のオーバーロード
外部関数のインポート
関数のエクスポート
イベント関数





スポンサーリンク



Copyright ©2015 MT4でEA自作しちゃお〜 All Rights Reserved.


Top

inserted by FC2 system