안녕하세요. 오늘은 매우 기본적인 것에 해당하지만, 저는 일 시작하고 한참 동안 몰랐었던 내용에 대해서 포스팅 하려고 합니다. 이걸 모르는 분은 없겠지 싶으면서도 저 같은 사람도 있을 것 같아서 포스팅 하겠습니다. 사실 제가 까먹지 않으려고 써놓는 목적이 더 크다고 할 수 있습니다. 포스팅 내용은 제목에서 알 수 있듯이, 선택적 매개 변수 설정입니다. 바로 코드 보시겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | using UnityEngine; using UnityEngine.UI; public class Test : MonoBehaviour { void Start() { Method_int(); Method_int(false); Method_int(false, 2); Method_int(1); } void Method_int(bool isPrint = true, int num = 0) { if (isPrint) { print(num); } else { print(num+1); } } } | cs |
Method_int함수에 bool값과 int 값을 매개로 받는다고 해놨습니다. 그런데 평소와 다른 점은 기본값을 설정해줬다는 점입니다. isPrint면 숫자를 그대로 출력하고, isPrint가 아니면 1을 더해서 출력하도록 했습니다. Start에 있는 대로 한 줄씩만 남겨놓고 실행시키면 로그에 어떻게 찍히게 될까요.
정답은 0, 1, 3, 실행 불가입니다.
왜 그런가 하면, 보면 알 수 있듯이 따로 매개 변수를 지정해주지 않으면 기본 값으로 설정해놓은 대로 처리하기 때문입니다. 첫 실행은 아무 것도 매개 변수를 지정해주지 않았기 때문에 0에 아무 것도 더하지 않고 출력합니다.
두번째 실행은 1을 더하며 출력하지만, int값은 정해주지 않았기 때문에 0값이 들어가서 1이 출력됩니다.
세번째 실행은 2에 1을 더해서 3이 출력됩니다.
그런데 네번째 실행은 되지 않습니다. 저는 형이 다르기 때문에 될 줄 알았는데요. 빌드 오류가 떠서 실행되지 않았습니다.
매개 변수 기본값을 지정하는데 있어서 순서는 대단히 중요합니다. 게다가 변수가 3개 이상 필요로 할 때, 뒷부분은 처리하지 않아도 되지만 중간을 건너 뛰고 입력하는 건 불가능한 것 같습니다. 포스팅 하면서 알았네요. 후 포스팅 할 수록 점점 초라해지는 것 같습니다. 그럼 이만 포스팅 마치겠습니다. 감사합니다.
'Unity Tip' 카테고리의 다른 글
onEndEdit와 onSubmit의 차이 (1) | 2018.12.06 |
---|---|
외부 문서 파일내 한글 때문에 제대로 안 읽혀질 때 (0) | 2018.12.02 |
UGUI버튼 스크립트로 메소드 연결하기(3) (0) | 2018.10.31 |
UGUI버튼 스크립트로 메소드 연결하기(2) (1) | 2018.10.29 |
터치(마우스 클릭)한 곳 좌표값 받는 스크립트 (0) | 2018.10.22 |