디폴트를 설정할 수 있다는 것
그렇다면 호출할 때 생략 가능!
->를 통해 출력값의 타입을 설정 가능하고
return을 통해 출력이 가능하다
또한 param 앞에 글자를 쓰면 externalName이라고 해서 호출할 때 externalName으로 param 호출 가능
_를 사용하면 호출 시 label을 생략하고 값만 대입하여 호출할 수 있다
파라미터 이름 생략 가능
이렇게 같은 함수 이름을 갖고 파라미터 이름, 타입을 변화할 수 있다
이걸 오버로드, 오버로딩이라고 한다
단, 함수 안의 코드 부분을 변경하면 잘못된 재선언이라고 뜬다
위에 언급한 것만 변화할 수 있는 것 같다
기본적으로 파라미터인 value는 constant임 고로 값 변경하려고 하면 에러가 뜸
이걸 inout을 통해 해결할 수 있음
위에 var로 value를 선언했고, 파라미터 앞에 언더스코어가 들어갔고, 함수호출시 &가 들어갔다
굉장히 귀찮다
쓸 일이 있는지 모르겠다
일단 이런 게 있다~ 정도만 알아두자
var function = add 를 통해 함수에 함수를 넣어줄 수 있다
매개변수에 함수를 넣는 것도 가능하다
함수를 쪼갤 때 유용할 것 같다
if let을 통해 nil일 경우와 아닐 경우 처리가 가능하다
그런데 이렇게 시스템에서 추천해주더라
아싸리 새로운 변수에 할당해서 체크하는 방식 말고
!= nil을 통해 체크하는 방법도 꽤 괜찮게 보인다
근데 선언한 상수를 써먹지 않을 경우에만 이렇게 쓰고
nil이 아닐 경우의 값을 빼와서 써야 할 경우는 당연히 if let을 쓰는 게 낫다
if let이랑 똑같은데 guard가 더 깔끔한? 코드를 짤 수 있다카더라?
솔직히 뭔차이가 있는진 모르겠지만 guard를 사람들이 많이 쓰는 것 같아서 이걸로 연습해야겠다
이런 특징을 갖고 있다
위의 코드에서는 from을 String 타입으로 선언했고,
pasedInt에서 from을 Int로 타입캐스팅 해주었다
즉 from에는 "10"이 들어가면 Int로 변환이 가능하지만
from에 "하이"처럼 문자가 들어가면 변환이 안 되기 때문에 else로 빠진다
String에 옵셔널 값을 할당하려고 하면 에러가 뜬다
그런데 ??를 통해 nil일 경우에 할당할 기본값을 설정하여 할당할 수 있다
우측에 보이는 것처럼 모델 5가 할당된 것을 확인 가능
이렇게 carName의 값이 존재할 경우에는 ?? 뒤에 할당한 기본값이 아닌 원래 있던 값이 할당된 것을 확인 가능
도전과제는 이러하다
님들도 해보시길 추천드림
위에서 String?으로 옵셔널 선언해주면 됨
if let으로 해도 되지만 나는 guard 연습 중이라 이렇게 했음
이건 입력 파라미터에 String?을 만들어준 게 2번과 다른 점임
이게 좋은 게 따로 뭔가 안 만들고 한 방에 처리할 수 있어서 편하네