P125에 보면 Result에 관해서 Note를 해놓으셨는데요,
거기에 보면 Result는 값을 반환만 하고 종결되지 않는 다고 하고,
이어서 함수 이름 자체를 가지고 리턴값으로 사용할 수 있다고 했는데
제가 궁굼한 것은
function test(a: integer ) : integer;
begin
if a = 1 then Result := 1; //<= (1)
else test := -1; // <==(2)
case a of // <== (3)
0 : showmessage('영이다');
1 : showmessage('일이다');
2 : showmessage('이이다');
end;
end;
위과 같은 코드에서 (1)과 같이 Result에 1을 넣으면 반환값이 넘어가고 (3)의 case 구문이 실행된후 종료 되는 건가요?
그리고 만일 (2)의 문장이 실행되면 (1)과 마찬가지로 -1이 반환되긴 하지만 (3)은 실행이 안되고 바로 종료되는 건가요?
Return 문과 같이 값을 반환하고 그 시점에서 종료되는 기능을 찾고 잇는데요,
어떻게 해야 할지 좀....
그리고 result의 형은 그것에 대입되는 값에 따라서 결정이 되는 건지요?
a 가 1인경우와 그렇지 않은경우, 모두 case 문은 실행됩니다..
Result 값을 넘겨줬다고해서.. 해당 function 을종료해버리지는 않습니다..
만약에 a 가 1 인경우에 Result 값을 넘겨주구 해당 function 을 빠져나오고 싶으시다면
function test(a: integer ) : integer;
begin
if a = 1 then begin
Result := 1;
exit;
end
else begin
test := -1; // <==(2)
end;
case a of // <== (3)
0 : showmessage('영이다');
1 : showmessage('일이다');
2 : showmessage('이이다');
end;
end;
이렇게 하시면 a 가 1 인경우에는 Result 값을 넘겨주고 해당 function 을 끝나게 되고, a 가 1 이 아닌경우에는 result 값을 넘겨주고, 밑에 case 문도 실행하게 됩니다.