포스트(post)

7. 명령어창에 메시지 출력하기 - (princ)

목표

명령어창에 특정 메시지를 출력하고, 또 마지막 실행 된 함수의 결과값이 명령어창에 출력되지 않게 하는 (princ)함수에 대해 알아봅시다.


명령어창에 문자열 출력하기

아마 짐작컨데, princ는 출력(print) + 문자(character)를 의미하지 않을까 싶습니다. 말 그대로 문자를 명령어창에 출력 해 주는 함수입니다. 명령어창에 출력하고 싶은 문자열(princ)함수에 인자로 넣으면 명령어 창에 표시됩니다.

1
(princ "\n이렇게 말이에요")

위의 함수를 명령어 창에서 실행 해 보면, 아마 이렇게 나올겁니다.

이렇게 말이에요 "\n이렇게 말이에요"

저희가 원했던 것은 명령어 창에 이렇게 말이에요가 표시되기를 바랐던 것인데, 왜 저희가 입력한 문자열이 그대로 뒤에 붙어서 나올까요?

이는 명령어 창이 마지막으로 사용한 함수의 결과값도 출력을 해주기 때문입니다. 위 (princ)함수는 명령어창에 메시지를 출력 해 준 후 그 메시지를 반환합니다.

따라서 (princ)함수 실행으로 인해 메시지의 실제내용이렇게 말이에요가 출력된 후에, 마지막으로 사용한 (princ)함수의 반환값(문자열)인 "\n이렇게 말이에요"를 명령어 창이 추가로 출력을 한 것입니다.


명령어창에 함수의 반환값 출력 방지하기

그렇다면, 마지막으로 사용한 함수의 반환값이 명령어 창에 출력되지 않기를 원한다면 어떻게 해야할까요? 마찬가지로 (princ)함수를 사용해서 해결할 수 있습니다.

(princ)함수에 아무런 메시지를 인자로 넣어주지 않는다면, (princ)함수는 명령어창에 출력 될 값을 출력하지 않게합니다.

그렇다면, 이제 명령어창에 순수하게 이렇게 말이에요가 출력되도록 수정 해 봅시다.

1
(princ "\n이렇게 말이에요")(princ)

먼저 첫번째 (princ)함수가 실행되면서 명령어창에 이렇게 말이에요가 출력됩니다. 그 후 이 (princ)함수는 "\n이렇게 말이에요"를 반환하지만, 뒤의 (princ)에 의해 명령어 창에는 이 값이 출력되지 않습니다.


리습파일 마지막에 (princ)함수를 추가 해 봅시다

작성 된 리습파일(.lsp)을 도면에 불러오기(로드)하면, 그 리습파일의 맨 마지막에 있는 함수의 결과값도 마찬가지로 명령어창에 표시되게 됩니다.

따라서 리습파일의 마지막 줄에는 항상 (princ)를 사용해서, 명령어 창에 불필요한 메시지가 출력되는 것을 방지하는 것이 좋습니다.

물론 불러오기(로드)할 때 사용자에게 특정 메시지를 보여주고 싶다면, 마찬가지로 (princ)함수에 메시지를 넣어서 마지막줄에 추가 해 주면 됩니다.

© IsaacGo. All rights reserved.