FC 5장_Function and Optional

Challenger·2021년 9월 9일
0
post-custom-banner

디폴트를 설정할 수 있다는 것
그렇다면 호출할 때 생략 가능!

->를 통해 출력값의 타입을 설정 가능하고
return을 통해 출력이 가능하다

또한 param 앞에 글자를 쓰면 externalName이라고 해서 호출할 때 externalName으로 param 호출 가능

_ UnderScore

_를 사용하면 호출 시 label을 생략하고 값만 대입하여 호출할 수 있다
파라미터 이름 생략 가능

이렇게 같은 함수 이름을 갖고 파라미터 이름, 타입을 변화할 수 있다
이걸 오버로드, 오버로딩이라고 한다
단, 함수 안의 코드 부분을 변경하면 잘못된 재선언이라고 뜬다
위에 언급한 것만 변화할 수 있는 것 같다

inout (파라미터 값 변경)


기본적으로 파라미터인 value는 constant임 고로 값 변경하려고 하면 에러가 뜸
이걸 inout을 통해 해결할 수 있음


위에 var로 value를 선언했고, 파라미터 앞에 언더스코어가 들어갔고, 함수호출시 &가 들어갔다
굉장히 귀찮다
쓸 일이 있는지 모르겠다
일단 이런 게 있다~ 정도만 알아두자

5-7

함수에 함수 넣기

var function = add 를 통해 함수에 함수를 넣어줄 수 있다

매개변수에 함수를 넣는 것도 가능하다
함수를 쪼갤 때 유용할 것 같다

5-10

옵셔널바인딩 1. - if let


if let을 통해 nil일 경우와 아닐 경우 처리가 가능하다


그런데 이렇게 시스템에서 추천해주더라
아싸리 새로운 변수에 할당해서 체크하는 방식 말고
!= nil을 통해 체크하는 방법도 꽤 괜찮게 보인다
근데 선언한 상수를 써먹지 않을 경우에만 이렇게 쓰고
nil이 아닐 경우의 값을 빼와서 써야 할 경우는 당연히 if let을 쓰는 게 낫다

옵셔널바인딩 2. guard let


if let이랑 똑같은데 guard가 더 깔끔한? 코드를 짤 수 있다카더라?
솔직히 뭔차이가 있는진 모르겠지만 guard를 사람들이 많이 쓰는 것 같아서 이걸로 연습해야겠다

  • guard는 함수 안에서 실행할 수 있다
  • return을 써야 한다

이런 특징을 갖고 있다
위의 코드에서는 from을 String 타입으로 선언했고,
pasedInt에서 from을 Int로 타입캐스팅 해주었다
즉 from에는 "10"이 들어가면 Int로 변환이 가능하지만
from에 "하이"처럼 문자가 들어가면 변환이 안 되기 때문에 else로 빠진다

닐 코얼레이싱

String에 옵셔널 값을 할당하려고 하면 에러가 뜬다
그런데 ??를 통해 nil일 경우에 할당할 기본값을 설정하여 할당할 수 있다
우측에 보이는 것처럼 모델 5가 할당된 것을 확인 가능


이렇게 carName의 값이 존재할 경우에는 ?? 뒤에 할당한 기본값이 아닌 원래 있던 값이 할당된 것을 확인 가능

5-12 옵셔널 도전과제


도전과제는 이러하다
님들도 해보시길 추천드림

1, 2번


위에서 String?으로 옵셔널 선언해주면 됨
if let으로 해도 되지만 나는 guard 연습 중이라 이렇게 했음

3번


이건 입력 파라미터에 String?을 만들어준 게 2번과 다른 점임
이게 좋은 게 따로 뭔가 안 만들고 한 방에 처리할 수 있어서 편하네

profile
롤 챌린저의 100일 개발 도전기
post-custom-banner

0개의 댓글