2つの結果を返す関数? - ページ 3

 
gordon:
以下は簡略化した説明です→https://www.mql5.com/en/forum/117210。 MQL4では、配列は常に参照渡しです。

はい、ありがとうございます。しかし、私が尋ねたように、それは他の言語ではそうではないことを意味するのでしょうか?もし、MQ/MT4や他の言語構成で持ってくる唯一の方法であれば、わざわざそれを明記する必要はないと思うのですが。

私は、あなたがその投稿で言ったように、「技術的な詳細」を尋ねているのだと思います。ただ、好奇心からであって、必要ではありません。

文法については、取引戦略をプログラミングするためのMQL5言語は、いくつかの特徴を除いて、C++プログラミング言語に非常によく似ています。

  • アドレス計算ができない
  • goto演算子なし。
  • 匿名の列挙は宣言できません。
  • クラスや構造体のコンストラクタはパラメータを持つことができません。
  • 多重継承ができない。

このように、C++ではその逆が真実になることを暗に示しているのだが......。 とにかくありがとう、Gordon。

 
Matutin:

申し訳ありませんが、「技術的」な回答ではありません :) グローバル変数ではなく、参照で変数を渡す方が良い理由を教えてください。

理由はたくさんあるのですが、繰り返したくないので、ここ ->https://en.wikipedia.org/wiki/Global_variable とここ ->http://www.c2.com/cgi/wiki?GlobalVariablesAreBad を参照してください。これは広く受け入れられている概念で、ネット上に多くの情報があります)。

 
cameofx:

[...] それは、他の言語ではそうではないことを意味するのですか? [...]

何も意味していませんが、具体的にはC言語でもC++でも配列は参照渡しです(厳密には配列の最初の要素へのポインタが渡され、そのポインタは値で渡されます)。
 
gordon:

理由はたくさんありますが、繰り返したくないので、ここ→https://en.wikipedia.org/wiki/Global_variable とここ→https://www.mql5.com/go?link=http://www.c2.com/cgi/wiki?GlobalVariablesAreBad を参照してください(詳しくはググってください...これは広く受け入れられている概念で、ネット上に多くの情報があります)。


とても興味深いです。残念ながら、EAにはパラメータが必要で、しかも大量にあるため、それを避けることはできず、https://www.mql5.com/go?link=http://www.c2.com/cgi/wiki?GlobalVariablesAreBad に書いてあるような理由で注意しなければなりません。

私はGlobalVariableに命名規則を使っています:はるかに管理が簡単で、いくつかのバグを避けることができます。

Gordonに感謝。

 
Matutin:

とても興味深いです。残念ながら、EAにはパラメータが必要で、しかも大量にあるので、それを避けることはできません[...]。

エクスターンは、確かに避けられないものです。具体的には、コードで値を変更することは推奨されませんし、関数間の情報受け渡しに使うべきではありません(こちら→https://www.mql5.com/en/forum/123535)


私はGlobalVariableの命名規則を使っています:管理がずっと簡単で、いくつかのバグを避けることができます。

この議論は、グローバルスコープで定義された変数(特殊関数 start(), init(), deinit() の外で宣言されたもの)に関するもので、GVに関する ものではありません....この2つを混同しないようにしましょう。
 

複数の結果を返す関数を 持つプログラミング言語はあるのでしょうか?

 

2つの値を組み合わせて返すように関数を だまし、呼び出し側の関数で再び組み合わせることができるかもしれません。

次のような感じです。

a = 10;

b = 20;

a = a*1000

c = a+b // 10020

return(c) とします。

とすると、呼び出し側の関数では

b = c%1000 // 20

a = c-b/1000 // 10

 
SDC:

2つの値を組み合わせて返すように関数をだまし、呼び出し側の関数で再び組み合わせることができるかもしれません。

次のような感じです。

[...]
違うかもしれません。
 

なんでやねん

 
SDC:

なんでやねん

なぜ、存在しない問題を解決するのか?なぜ車輪を再発明するのか?なぜ、限られたケースでしか機能しない不明瞭なコードを作り上げるのか?