두 개의 다른 변수를 반환 할 수 있지만 한 번에 하나씩 만 함수 호출에서 반환되는 함수를 알 수있는 방법이 있습니까?다른 반환 변수가있는 함수
예 : I은 출력의 하나가 유효한 다음의 기능을 갖는다 (다른 하나는 수 [] 것)
function [a,b] = AlternatingOutput (input)
if input == 1
return ONLY A
else
return ONLY B
end
end
난 스크립트에서 호출
[a,b] = AlternatingOutput (input)
나는 다음과 같은 (의사 코드)를 말하고 싶다 :
if (function outputs a)
[a,~] = AlternatingOutput(input)
elseif (function outputs b)
[~,b] = AlternatingOutput(input)
end
스크립트는 다음과 같다. 루프에서 실행하고 나중에 최신이 필요합니다 유효한 a와 b에 대한 값, 그래서 나는 []로 두 중 하나를 덮어 쓸 수 없습니다
나는 어떤 변수가 될 것인가를 검사하는 함수를 작성할 수 있다는 것을 이해합니다. 출력 될 수 있지만 더 우아한 방법이 있는지 궁금 해서요.
은 내가 내 질문에 분명히했다 바라며, 나는 누군가가 내 질문에 대답을 할 수 있습니다 :
항상 두 개의 값을 반환하지만, [센티넬 값]를 사용 (http://stackoverflow.com/questions/22103552/how-to-make-a-sentinel- : 쉽게 루프에서 스크립트에서 호출 가치 -에서 - MATLAB) fo r "not-returned"값. 'AlternatingOutput'을 검색하면 임시 이름으로 값을 반환합니다 :'[ax, bx] = AlternatingOutput (input)', 그리고 반환 값이 센티널이 아닌 경우에만 재 지정하십시오 ('axin = sentinel a = ax; end'). 함수 I/O는 솔직히 잘못된 디자인처럼 냄새가납니다. –
플래그가 1이면 두 번째 출력 대신 플래그를 넣습니다. 출력이 == a이면 플래그가 0입니다. b – Umar
아,'[]'가 센티넬로 사용될 수 있습니다. 값. –