MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 406 1...399400401402403404405406407408409410411412413...1953 新しいコメント 削除済み 2018.01.05 10:46 #4051 RomanRott:パラメータ数が可変の関数を書くには?関数のいくつかのパラメータを初期値に設定することができます(これらのパラメータは最後のものでなければなりません)。関数が 呼び出されたとき、これらのパラメータは必要に応じて設定されたりされなかったりする。パラメータが明示的に設定されない場合は、初期値が設定される。2つ目の選択肢は、オーバーロードです。同じ名前の関数を、パラメータの型や数だけを変えて書くだけです。 Roman Sharanov 2018.01.05 10:56 #4052 Artyom Trishkin:例えば?関数に複数のパラメータを渡す必要があるが、状況に応じて、あらかじめ知っている別の数を渡す必要がある。 という関数で、これらのパラメータを処理します。 C言語では、例えば次のように実装されています。 int func(int a, int b, ...) 削除済み 2018.01.05 11:42 #4053 MetaEditorのツールバーに「Undo」ボタンを設置する方法はありますか?(Ctrl+Zを実装しているもの) Konstantin Erin 2018.01.05 11:59 #4054 RomanRott: 関数に複数のパラメータを渡す必要があるが、状況に応じて、あらかじめ知っている別の数を渡す必要がある。 という関数で、これらのパラメータを処理します。 C言語では、例えば次のように実装されています。 int func(int a, int b, ...)配列と、配列から取得するパラメータの数を渡す Roman Sharanov 2018.01.05 12:10 #4055 STARIJ:配列と、配列から取得するパラメータの数を渡す つまり、私が渡すべき番号は順番が違う、つまり普遍的なものは生成できないのです Artyom Trishkin 2018.01.05 12:16 #4056 RomanRott: つまり、私が渡すべき番号は順番が違う、つまり普遍的なものは生成できないのです。 せめて、抽象的でない例を一つでも挙げてください。 Roman Sharanov 2018.01.06 01:07 #4057 Artyom Trishkin: せめて抽象的でない例を一つでも挙げてください。例えば、こんな感じです。 条件によって(not ifですが、基本的には自分で書いています。)a = func(digit, 10, 18, 42); または a = func(digit, 11, 18, 42, 15, 13); または a = func(digit, 5);double func(int num, ??????){ return("sum of these parameters"/num);} Artyom Trishkin 2018.01.06 02:30 #4058 RomanRott: このように 条件によって(not if, でも基本的には自分で書いている)a = func(digit, 10, 18, 42); または a = func(digit, 11, 18, 42, 15, 13); または a = func(digit, 5)です。double func(int num, ?????){. return("sum of these parameters"/num);}そこで、最初に思いついたのが、すでにここで提案したように、関数に配列doubleを渡し、関数内で渡された配列の値から必要な値を計算することで、数の量(配列サイズ)を知ることも、それに応じた関係の計算も可能になる、ということでした。計算式だけは、どのようなサイズの配列でも同じになります。計算式も変更するのであれば、配列だけではうまくいきませんので、もうひとつパラメータを作って、正しい計算式を指定する必要があります。例えば、計算式の種類を示す列挙型(ENUM_TYPE_CALCULATED)を渡して、この列挙型の値、例えばCALCULATE_SUMMに基づいて、(この例では)渡された配列のすべての値の合計を計算するだけでよいのです。 Alexey Viktorov 2018.01.06 07:05 #4059 RomanRott: つまり、そこに渡すべき数字は順番が違う、つまり普遍的なものが形成されないのですここで、本格的な回答ですが、回答はありません・・・。 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム MQL4に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 アレクセイ・コジツィン さん 2018.01.05 11:46 いくつかの関数パラメータに初期値を設定することができます(これらのパラメータは最後のものであるべきです)。関数を呼び出す際に、必要に応じてこれらのパラメータを設定したりしなかったりします。パラメータが明示的に設定されていない場合、それらは初期値を取得します。2つ目の選択肢は、オーバーロードです。同じ名前の関数を、パラメータの型や数だけを変えて書くだけです。 Artyom Trishkin 2018.01.06 07:29 #4060 Alexey Viktorov:ここで本格的な答え合わせをするが、それに対する回答がない...。あらかじめ集合と個数がわかっていない場合、新しい集合のたびに関数は存在しない。 1...399400401402403404405406407408409410411412413...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
パラメータ数が可変の関数を書くには?
関数のいくつかのパラメータを初期値に設定することができます(これらのパラメータは最後のものでなければなりません)。関数が 呼び出されたとき、これらのパラメータは必要に応じて設定されたりされなかったりする。パラメータが明示的に設定されない場合は、初期値が設定される。
2つ目の選択肢は、オーバーロードです。同じ名前の関数を、パラメータの型や数だけを変えて書くだけです。
例えば?
関数に複数のパラメータを渡す必要があるが、状況に応じて、あらかじめ知っている別の数を渡す必要がある。
C言語では、例えば次のように実装されています。という関数で、これらのパラメータを処理します。
int func(int a, int b, ...)
MetaEditorのツールバーに「Undo」ボタンを設置する方法はありますか?
(Ctrl+Zを実装しているもの)
関数に複数のパラメータを渡す必要があるが、状況に応じて、あらかじめ知っている別の数を渡す必要がある。
C言語では、例えば次のように実装されています。という関数で、これらのパラメータを処理します。
int func(int a, int b, ...)
配列と、配列から取得するパラメータの数を渡す
配列と、配列から取得するパラメータの数を渡す
つまり、私が渡すべき番号は順番が違う、つまり普遍的なものは生成できないのです。
せめて抽象的でない例を一つでも挙げてください。
例えば、こんな感じです。
条件によって(not ifですが、基本的には自分で書いています。)
a = func(digit, 10, 18, 42); または a = func(digit, 11, 18, 42, 15, 13); または a = func(digit, 5);
double func(int num, ??????)
{
return("sum of these parameters"/num);
}
このように
条件によって(not if, でも基本的には自分で書いている)
a = func(digit, 10, 18, 42); または a = func(digit, 11, 18, 42, 15, 13); または a = func(digit, 5)です。
double func(int num, ?????)
{.
return("sum of these parameters"/num);
}
そこで、最初に思いついたのが、すでにここで提案したように、関数に配列doubleを渡し、関数内で渡された配列の値から必要な値を計算することで、数の量(配列サイズ)を知ることも、それに応じた関係の計算も可能になる、ということでした。計算式だけは、どのようなサイズの配列でも同じになります。計算式も変更するのであれば、配列だけではうまくいきませんので、もうひとつパラメータを作って、正しい計算式を指定する必要があります。例えば、計算式の種類を示す列挙型(ENUM_TYPE_CALCULATED)を渡して、この列挙型の値、例えばCALCULATE_SUMMに基づいて、(この例では)渡された配列のすべての値の合計を計算するだけでよいのです。
つまり、そこに渡すべき数字は順番が違う、つまり普遍的なものが形成されないのです
ここで、本格的な回答ですが、回答はありません・・・。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
MQL4に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。
アレクセイ・コジツィン さん 2018.01.05 11:46
いくつかの関数パラメータに初期値を設定することができます(これらのパラメータは最後のものであるべきです)。関数を呼び出す際に、必要に応じてこれらのパラメータを設定したりしなかったりします。パラメータが明示的に設定されていない場合、それらは初期値を取得します。
2つ目の選択肢は、オーバーロードです。同じ名前の関数を、パラメータの型や数だけを変えて書くだけです。
ここで本格的な答え合わせをするが、それに対する回答がない...。
あらかじめ集合と個数がわかっていない場合、新しい集合のたびに関数は存在しない。