EAプログラミングチュートリアル:変数スコープの詳細
1ローカル変数:
関数内で定義された変数はローカル変数と呼ばれ、そのスコープは関数内に限定されます。これらの変数にアクセスできるのは関数内のコードのみで、関数外のコードは関数内で定義された変数にアクセスできません。例えば:
int funcname(int a)
{
int abc;//関数内の変数は、関数内のコードからのみアクセスでき、外部コードは変数abcを使用できません。
}
2関数パラメータ:
関数引数の変数名は、関数内の変数名と同じにすることはできません。引数には、次のようなデフォルト値を指定することもできます。
void func(int x, double y = 0.0, bool z = true)
{
...
}
この関数は、yのデフォルト値を0.0、zのデフォルト値をtrueに指定します。シュンドゥオEAでは、このパラメータ設定を理解することで、ポリシーをより適切に最適化できます。
関数を呼び出すとき、デフォルト値を持つ引数を指定しなくてもよい。例えばfunc(9)はfunc(9,0.0, true)を呼び出すことに相当する。func(9,1.5)を呼び出す場合はfunc(9,1.5,true)を呼び出すことに相当する。
一般的に、関数の引数は値を渡して呼び出します。関数内で引数の値を変更しても、関数を呼び出すプログラムブロックには影響しません。配列でも値を渡して渡します。
では、どのようにしてパスレファレンスを実装するのでしょうか?パスレファレンスを使用すると、関数内のパラメーター値が変更されると、関数を呼び出すコードセグメントの変数値も変更されます。パスレファレンスを実装するには、関数のパラメーター型の後に'&'記号を追加する必要があります。例:
void func(int& x, double& y, double& z[])
{
x = 8;
}
参照を渡す関数パラメータの場合、デフォルト値を設定することはできないことに注意してください。
関数引数の数は64個を超えてはいけません。
3グローバル変数:
グローバル変数は、関数と同じレベルの変数であり、そのスコープはMQLコード全体をカバーします。つまり、MQLコード全体のすべての場所からグローバル変数にアクセスできます。例:
int a = 10;
int funca()
{
Print(a);//グローバル変数aにアクセスできます
return (0);
}
int funcb()
{
Print(a);//グローバル変数aにアクセスできます
return (1);
}
4外部変数:
変数が外部変数として定義されている場合、EAクライアントはこの外部変数の値を直接設定できます。この機能は、Dendbo EAのデバッグおよび最適化プロセスで非常に便利です。
例えば:
extern int a = 10;
extern color c = red;
転載は出典を明記してください:https://www.daoctech.com/fxnews/2311.html
免責事項:この記事の内容は外国為替アカデミーの見解を表すものではありません。内容は参考用であり、投資アドバイスを構成するものではありません。投資家がこれに基づいて操作する場合、リスクは自己負担となります。
