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 (자세한 내용은 Google에서 검색할 수 있습니다... 널리 받아들여지는 개념이며 인터넷에 많은 정보가 있습니다.)

 
cameofx :

[...] 그것은 다른 언어에서는 그렇지 않다는 것을 의미합니까? [...]

아무 것도 의미하지 않지만 특히 C 및 C++ 모두에서 배열도 참조로 전달됩니다(기술적으로 배열의 첫 번째 요소에 대한 포인터가 전달되고 해당 포인터는 값으로 전달됨).
 
gordon :

반복하고 싶지 않은 많은 이유 대신 여기 -> https://en.wikipedia.org/wiki/Global_variable 및 여기 -> https://www.mql5.com/go?link= 를 참조하겠습니다. http://www.c2.com/cgi/wiki?GlobalVariablesAreBad (자세한 내용은 Google에서 검색할 수 있습니다... 널리 인정되는 개념이며 인터넷에 많은 정보가 있습니다.)


매우 흥미로운 ! 불행히도 EA에는 매개변수가 필요하고 때로는 많이 필요하므로 이를 피할 수 없으며 https://www.mql5.com/go?link=http://www.c2에 언급된 모든 이유에 대해 주의를 기울여야 합니다. com/cgi/wiki?GlobalVariablesAreBad

GlobalVariable에 대한 명명 규칙을 사용하고 있습니다. 일부 버그를 관리하고 방지하기가 훨씬 쉽습니다.

고마워 고든.

 
Matutin :

매우 흥미로운 ! 불행히도 EA는 매개변수가 필요하고 때로는 많이 필요하므로 피할 수 없습니다 [...]

인턴은 정말 피할 수 없습니다. 범위가 전역적이지만 전역 변수와 동일 하지 않습니다 ( GV 와 혼동하지 마십시오). 특히 - 코드를 통해 값을 변경하는 것은 권장되지 않으므로 어쨌든 함수 간에 정보를 전달하는 데 사용해서는 안 됩니다(여기 참조 -> https://www.mql5.com/en/forum/123535 ).


GlobalVariable에 대한 명명 규칙을 사용하고 있습니다. 일부 버그를 관리하고 방지하기가 훨씬 쉽습니다.

이 논의는 전역 범위(특수 함수 start(), init(), deinit() 외부에서 선언됨)에 정의된 변수에 관한 것이며 GV 에 대한 것이 아닙니다... 둘을 혼합하지 마십시오.
 

궁금합니다. 여러 결과를 반환하는 함수 가 있는 프로그래밍 언어가 있습니까?

 

호출 함수에서 다시 결합을 해제할 수 있는 방식으로 결합하여 두 값을 반환하도록 함수 를 속일 수 있습니다.

이 같은

a = 10;

b = 20;

에이 = 에이*1000

c = a+b // 10020

반환(c);

그런 다음 호출 함수에서

b = c%1000 // 20

a = cb/1000 // 10

 
SDC :

호출 함수에서 다시 결합을 해제할 수 있는 방식으로 결합하여 두 값을 반환하도록 함수를 속일 수 있습니다.

이 같은

[...]
아마.
 

왜 안 돼 ?

 
SDC :

왜 안 돼 ?

존재하지 않는 문제를 왜 해결합니까? 왜 바퀴를 재발명합니까? 제한된 경우에만 작동하는 불명확한 코드를 구성하는 이유는 무엇입니까?
사유: