어떤 함수 F(a,b)가 있다치자

근데 리턴 받아야 될 값은 두개야

근데 보통 대부분 함수 리턴값은 1개밖에 안돼잖아?

이제 여기서 문제가 생기는데

깔끔하게 두개를 받아오는 방법이 뭘까?


방법1

전역변수를 쓴다.

int A=0,B=0;

function F(a,b) {

A=a';

B=b';

}

F(1,2);

print("%d %d" ,A,B);

밑에 방법중 상대적으로 빠르겠지만, 제일 별로라 생각해 쓸때없이 메모리쓰고 에초에 변수만드는걸 싫어해서 이건 아닌거 같아


방법2

리턴값을 변경하는 인자 하나를 더 받는다.

function F(a,b,sign) {

if (sign) {return a'}

else {return b'}

}

print("%d %d", F(1,2,true),F(1,2,false));

난 이방법은 괜찮아보이긴 하지만 그래도 일시적이지만 메모리 쓰는게 좀 껄쩍지근해.


방법3

두개를 배열로 만든다음 리턴한다.

function F(a,b) {

return [a',b'];

}

print("%d %d", F(1,2)[0],F(1,2)[1]);

이방법은 변수를 일절 만들지 않고 하긴 하는데 일시적으로 배열을 만들고 여전히 위 방법과 같은 문제로 똑같은짓을 2번 하게 만들어서 첫번째 방법의 2배는 느릴꺼야


이런 방법들을 생각해봤는데 메모리와 속도를 둘다 잡는 그런 마음에 드는 방법이 없네, 다들 어떻데 만들어?

참고로 위에 언어는 어느 언어도 아니고 중립적으로 만들려고 했는데 내가 자바스크립트 하다보니 자바스크립트 경향이 좀 있네