오늘의 주제 : Swift 공식문서 함수편 :: 두번째 챕터 - Function Argumnet Labels and Parameter Names
https://docs.swift.org/swift-book/LanguageGuide/Functions.html#ID169
Swift공식문서를 참고 인용하였습니다.
Swift공식문서 함수편 ::
참고로, 첫 번째 챕터는 매개변수를 0개, 또는 여러 개 사용할 수 있고, 리턴을 어떻게 이용하는 등 가장 기본적인 함수의 사용방법 설명
오늘 설명할 두 번째 챕터 : 함수의 인자 Label과 매개변수이름
제가 요약한 설명을 읽어보시고 읽으시면 편하게 읽히실 겁니다.
기본적으로 함수는 매개변수 인자에 대해 라벨링을 2개를 붙일 수 있습니다.
하나는 함수 외부에서 사용할 라벨, 나머지 하나는 함수 내부에서 사용할 라벨입니다.
Argument Label, Parameter Name 가 어디에 위치하는지 확인해주세요.
argumentLabel은 함수외부에서 사용할 외부라벨
parameterName은 함수 내부에서 사용할 내부라벨라고 생각하시면 편합니다.
*이해를 돕기 위해 함수기준 내부,외부라고 임의로 설정한 것입니다.
Swift에서 함수 선언 방법은 3가지로 구분 지을 수 있습니다.
함수 선언 방법
1. 함수( 외부라벨 내부라벨 : 자료형타입)
2. 함수( _ 내부라벨 : 자료형 타입)
3. 함수 ( 외부라벨 : 자료형 타입)
각 경우에 대해 add함수를 이용해 직접 코드로 예를 들어 설명해드리겠습니다.
1. 함수(외부라벨 내부라벨 : 자료형 타입)
A는 외부라벨 a는 내부라벨 / B는 외부라벨 b는 내부라벨
4번 라인 : 외부라벨 A,B는 함수 호출시 사용이 됩니다.
7번 라인 : 내부라벨 a,b는 함수 내부에서 사용이 됩니다.
어떤 방식인지 이해가시나요. 2번째 설명 하겠습니다.
2. 함수( _ 내부라벨 : 자료형 타입)
_라는 건 외부라벨을 사용하지 않겠다 라는 의미입니다.
그러면 함수 호출 시 어떻게 사용하면 될까요
4번 라인 : add(3,5) 와 같이 외부라벨 없이 사용한게 보이시나요.
6번 라인 : 함수 선언 형태 확인
이 방법이 편하긴하겠지만, 선호되는 코드는 아니라고 합니다.
3. 함수 ( 외부라벨 : 자료형 타입)
이번에는 외부라벨 하나만 사용하는 것입니다.
이 경우는 외부라벨 하나로 외부,내부에서 겸용으로 사용할 수 있습니다.
4번 라인 : a와 b를 이용합니다.
7번 라인 : 동일하게 a와 b를 이용합니다.
이제 Swift 공식문서를 보여드리겠습니다.
함수 매개변수는 argument label과 parameter Name 을 갖는다.
argument label은 함수가 호출될 때 사용되고, parameter Name은 함수구현에 사용된다.
기본적으로, parameter Name은 argument label를 사용한다네요.
(코드 사진 )
모든 파라마터는 유일해야한다. argument label은 동일해도 되지만, 유일한게 아무래도 읽기 좋다.
Argument Label 명시한 경우 : 설명 1번
argument label를 parameter name 전에 써야한다. 띄어씌기 해야함.
여기서는 greet함수를 예시로 들어주었네요.
func greet(person : String, from hometown : String)
print(greet(~~~~~~~, from : ~~~))
이와 같이 argument label 을 사용하면, 의도가 명확하게 코드를 명시할 수 있다고 하네요.
Argument Label 생략한 경우 : 설명 2번
원하지 않으면 사용하지 (_) 를 이용해 사용할 수 있다.
(코드사진)
만약 parameter가 argument label을 갖고 있다면, 반드시 호출 시 사용해야합니다.
글이 너무 길어져 매개변수는 다음 편에서 연재하겠습니다.
읽어주셔서 감사합니다.
부족한 점을 지적해주시거나 자유로운 코멘트 환영합니다.
'IT > Swift' 카테고리의 다른 글
[Swift] convenience init 이제는 알아야지!? (0) | 2021.09.18 |
---|---|
[Swift 스위프트] let과 var차이 (0) | 2021.08.22 |
[iOS의 Swift] 옵셔널 바인딩 Optional binding (0) | 2021.08.10 |
[Swift 스위프트] print 사용방법에 대해 - print(_:seprator:terminator) - 티스토리 (0) | 2021.07.12 |