p. 156 - 함수

 

한줄짜리 & return타입이 맞으면 return 안써도 됨.

 

  • parameter(매개변수)

parameter가 없는 함수

 

parameter가 여러개인 함수

 

 

  • 전달인자 레이블(Argument Label)

: 함수 외부에서 매개변수의 역할을 좀 더 명확히 알 수 있다.

 

  • parameter에 기본값 주기

실행 결과

  • 가변 parameter(매개변수)

: 가변 파라미터는 함수당 최대 1개까지 가능.

...을 매개변수 타입뒤에 붙이면 됨.

실행 결과


 

p. 163 - "call by Value" & "call by Reference"

  • inout 매개변수의 활용

https://jintaewoo.tistory.com/25

 

inout 파라미터 알아보기

함수가 호출되고 종료될 때, 함수 내부에서 변경된 값은 함수 외부의 값에는 영향을 끼칠 수 없습니다. 하지만 함수 호출이 종료된 후에도 변경 사항을 유지해야할 경우, inout 파라미터를 사용합

jintaewoo.tistory.com

 

: inout파라미터를 사용하면 (함수로 전달되는 값을 복사하는게 아닌) 파라미터 자체를 전달함.(= 파라미터의 메모리 주소를 전달한다.)

 

파라미터엔 inout을, 함수 호출부분엔 &을.

 

  • 리턴값이 없는(생략된) 함수

 

 

  • p.166 - 함수를 데이터타입으로 사용

함수를 하나의 데이터타입으로 나타내는 방법

: typealias example = (String, String...) → String 이런식으로 나타냄.

  • 전달인자로 함수 전달

  • 반환값으로 함수 반환

 


 

p. 168 - 중첩 함수

스위프트는 데이터 타입중첩이 자유로움.

중첩 함수 : 함수 안의 함수로 구현. / 상위 함수의 몸통 블록 내부에서만 함수 사용 가능. / (But,) 중첩함수를 반환하면 밖에서도 사용 가능.

 

  • 중첩함수 미사용

실행 결과

 

  • 중첩함수 사용

실행 결과


p. 170 - 종료되지 않는 함수(비반환 함수 or 비반환 메서드)

: 이 함수 실행시 프로세스 동작은 끝났다고 볼 수 있음.

오류를 던지거나 or 중대한 시스템 오류를 보고함.

비반환 함수는 반환타입 : Never

실행 오류뜸... (이유 모름)

 


 

p. 171 - @discardableResult 속성(return값 무시해도 ok)

@discardableResult : return값을 안쓸 수도 있다고 @discardableResult로 표현해줬기 때문에, 컴파일러가 경고를 표시하지 않음.

 

 


아래 파일은, 제가 공부하면서 작성한 소스코드 자료입니다.

CH7_함수.playground.zip
0.01MB

반응형