2つの結果を返す関数? - ページ 2 1234 新しいコメント JC 2010.06.25 22:13 #11 cameofx: irusoh1の説明で抜けているのは、変数がArray(s) [...]である必要があることです。 irusoh1の言うとおり、変数は配列である必要はない。例えば int start() { int returnvalue1, returnvalue2; returnvalue1 = Example(returnvalue2); MessageBox("Example 1: " + returnvalue1 + "\r\nExample 2: " + returnvalue2); } int Example(int & referenceparameter) { referenceparameter = 2; return (1); } 削除済み 2010.06.26 04:06 #12 inkexit: 1つの関数から2つの結果を返す必要があります。 もし、2つ以上の結果を変数に代入するのであれば、グローバル変数として宣言し、関数 内で変数に値を代入すればよいでしょう。 gordon 2010.06.26 04:26 #13 engcomp: 2つ(またはそれ以上)の結果を変数に代入する場合は、グローバル変数として宣言し、関数の中で値を代入すればよい。 グローバル変数の 数を最小限にすることは、良いプログラミングの実践と考えられています。グローバルスコープで宣言するよりも、(複数の変数を返す必要がある場合は)いくつかの変数を参照渡しにしたほうがよいでしょう。 削除済み 2010.06.26 05:49 #14 gordon: グローバル変数の数を最小限にすることは、プログラミングの良い習慣と考えられています。いくつかの変数は、グローバルスコープで宣言するよりも、(複数の変数を返す必要がある場合は)参照渡しする方がよいでしょう。 Gordonさん、ありがとうございます。 cameo 2010.06.26 07:44 #15 jjc: irusoh1の言うとおり、変数は配列である必要はない。例えば 私の言い回しや考え方は、このトピックに対する答えとしては間違っています。でも、参照渡しの目的は、要するに関数で Array(s)を操作するための実用的な方法なんですね。 パラメータを参照関数として変数に渡すと、X個の変数を変更し、さらにreturnで1つの変数を変更するという実用性があるだけです。 一方、Arrayに使うと、括弧内のX個のArrayと各ArrayのY個のサイズを変更することができます。 Iggy 2010.06.26 12:47 #16 配列は常に参照渡しです。MQLの配列の問題は、関数 内で変更できないことです(resizeのように)メンバーだけが変更できます。 これは意味がなく、配列操作の範囲が制限されます。 多分、MQL5で修正されたのでは? gordon 2010.06.27 01:01 #17 irusoh1: [MQLの配列の問題点は、関数内で変更できないことです(resizeのように)メンバーだけが変更可能です。 関数に 参照渡しされた配列は、関数内部でリサイズできます 。どういう意味ですか? cameo 2010.06.27 03:25 #18 [...] MQLの配列の問題は、関数内部で変更できないことです(resizeのように) only their members can.@ irusoh1 :関数の パラメータを動的にするということですか? 私もよくわからないわ。 Gordon : なぜ「パラメータは値で渡される」と言われるか知ってる?配列は参照で渡すしかないんだ。コード上ではどうなるかはわかるんだけど、その理由がわからないんだ。例えば、他の言語ではそうでない場合があるのだろうか?そのルールの逆はどうなるのか、、、。 gordon 2010.06.27 04:39 #19 cameofx: Gordon : なぜ、「パラメータは値で渡す。配列は参照で渡すしかないんだ。コード上ではどうなるかは分かるんだけど、その理由が分からないんだ。例えば、他の言語ではそうでない場合があるのだろうか?そのルールの反対はどうなるのか、、、、。 以下、簡略化して説明します→https://www.mql5.com/en/forum/117210。 MQL4では、配列は常に参照渡しです。 削除済み 2010.06.27 06:51 #20 皆さん、こんにちは Gordon said : グローバル変数の数を 最小限にすることは、良いプログラミングの実践と考えられています。グローバルスコープで宣言するよりも、(複数の変数を返す必要がある場合は)参照渡しの方が良い。 申し訳ありませんが、「技術的」な回答ではありません :) グローバル変数ではなく、参照で変数を渡す方が良い理由を教えてください。 ありがとうございます。 フィリップ 1234 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
irusoh1の説明で抜けているのは、変数がArray(s) [...]である必要があることです。
irusoh1の言うとおり、変数は配列である必要はない。例えば
1つの関数から2つの結果を返す必要があります。
2つ(またはそれ以上)の結果を変数に代入する場合は、グローバル変数として宣言し、関数の中で値を代入すればよい。
グローバル変数の数を最小限にすることは、プログラミングの良い習慣と考えられています。いくつかの変数は、グローバルスコープで宣言するよりも、(複数の変数を返す必要がある場合は)参照渡しする方がよいでしょう。
irusoh1の言うとおり、変数は配列である必要はない。例えば
私の言い回しや考え方は、このトピックに対する答えとしては間違っています。でも、参照渡しの目的は、要するに関数で Array(s)を操作するための実用的な方法なんですね。
パラメータを参照関数として変数に渡すと、X個の変数を変更し、さらにreturnで1つの変数を変更するという実用性があるだけです。
一方、Arrayに使うと、括弧内のX個のArrayと各ArrayのY個のサイズを変更することができます。
配列は常に参照渡しです。MQLの配列の問題は、関数 内で変更できないことです(resizeのように)メンバーだけが変更できます。
これは意味がなく、配列操作の範囲が制限されます。
多分、MQL5で修正されたのでは?
[MQLの配列の問題点は、関数内で変更できないことです(resizeのように)メンバーだけが変更可能です。
@ irusoh1 :関数の パラメータを動的にするということですか? 私もよくわからないわ。
Gordon : なぜ「パラメータは値で渡される」と言われるか知ってる?配列は参照で渡すしかないんだ。コード上ではどうなるかはわかるんだけど、その理由がわからないんだ。例えば、他の言語ではそうでない場合があるのだろうか?そのルールの逆はどうなるのか、、、。
cameofx:
Gordon : なぜ、「パラメータは値で渡す。配列は参照で渡すしかないんだ。コード上ではどうなるかは分かるんだけど、その理由が分からないんだ。例えば、他の言語ではそうでない場合があるのだろうか?そのルールの反対はどうなるのか、、、、。
皆さん、こんにちは
Gordon said : グローバル変数の数を 最小限にすることは、良いプログラミングの実践と考えられています。グローバルスコープで宣言するよりも、(複数の変数を返す必要がある場合は)参照渡しの方が良い。
申し訳ありませんが、「技術的」な回答ではありません :) グローバル変数ではなく、参照で変数を渡す方が良い理由を教えてください。
ありがとうございます。
フィリップ