일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 26 | 27 | 28 |
- 메모리 접근 충돌
- Git Large File Storage
- 클린아키텍쳐
- Dependency Rule
- windowScene
- Dispatch.main.sync
- RxSwift
- 잡초가득블로그
- Github file size
- Ribs
- UICoordinateSpace
- iOS 버전 점유율
- conflicting access to memory
- Concurrent
- coordinateSpace
- rib
- 대머리깃허브
- memory safety
- RIBs Tutorial
- App Signing
- RxCocoa
- in-out
- ios
- Apple Certificate
- SWIFT
- Large File Storage
- swiftdocs
- 로버트마틴형
- iOS Target
- Automatically manage signing
- Today
- Total
빙수왕의 개발일지
_ sender: Any에서 언더바 _는 뭘까 - 전달인자 라벨, 와일드카드 식별자 본문
일단 내가 무작정 처음 예제 앱을 만들면서 생소했던 것들은..
1.
왜 가끔 정의된 함수들에 변수명 앞에 또 뭐가 있는지? (위에서는 for 같은 것)
2.
함수를 호출할 때 sender: 이런식으로 가이드 텍스트가 자동으로생기는데 왜 지우면 에러가 나는지? 당연히 그냥 엑스코드 기능인줄 알았는데 진짜 텍스트였음
3.
또 "_"라던지 "."는 뭐하는애인지 .. 이런것들이였다.
이건 다 전달인자 레이블(Argument Label)을 몰라서 못알아먹는거였다..
다음과 같은 함수가 있다고 가정했을 때,
func introduce(to name: String) → () {
}
// 함수 호출
introduce(to: "나리")
Parameter, Argument, Argument Label, 함수명에 해당하는 값은 다음과 같다.
name - Parameter 매개변수
* backquote로 감싸주면 var과같은 키워드도 이름으로 사용할 수 있다.
* 호출할 때 이 이름을 앞에 name: 이런식으로 쓰는게 강제임.
"나리" - Argument 전달인자 (실제 호출 시 전달하는 값)
to - Argument Label 전달인자 레이블
* 자바와는 다르게 전달인자 레이블이라는 개념이 있다.
* 이게 쓰이면 함수 호출 시 파라미터 이름 대신 보이게 되지만, 파라미터 이름이 바뀌는건 아니므로 함수 내부에서는 쓰이지 못한다.
* 사용하고 싶지 않다면 와일드카드 식별자(_)를 사용한다. 이놈은 카드게임에서의 조커와 같다. 뭐든지 될 수 있다. 그래서 안써도 상관이 없게 해주는 역할..
* 레이블을 바꾸면 함수의 이름도 바뀐다!!! 아래 함수명처럼. 즉 오버로딩도 가능해진다.
* 왜쓰는거냐? 가독성 때문인 것 같다. 주로 전치사를 사용해서 책읽듯이 코드가 읽힐 수 있도록 돕는 용도라고 하는데 ...
함수명 - introduce(to:)
그래서 결론은.. 아래와 같다..
// 1. 일반적 함수
func normalFunc(name: String) {
}
// 함수호출
normalFunc(name: "나리")
// 함수이름: normalFunc(name:)
// 2. 전달인자 레이블을 사용한 함수
func usingArgumentLabelFunc(to name: String) {
}
// 함수호출
usingArgumentLabelFunc(to: "나리")
// 함수이름: usingArgumentLabelFunc(to:)
// 3. 전달인자 레이블을 와일드카드 식별자로 사용하는 함수 - 함수호출 시 자바에서처럼 호출
func usingWildCardLabelFunc(_ name: String) {
}
// 함수호출
usingWildCardLabelFunc("나리")
// 함수이름: usingWildCardLabelFunc(_:)
"."은 Implicit Member Expression
Expressions — The Swift Programming Language (Swift 5.3)
Expressions In Swift, there are four kinds of expressions: prefix expressions, binary expressions, primary expressions, and postfix expressions. Evaluating an expression returns a value, causes a side effect, or both. Prefix and binary expressions let you
docs.swift.org
이였다. 객체이름을 생략하고(부르는 객체를 스위프트가 유추할 수 있을 때) 멤버를 부를 때 사용하는 것이였음.!
'개발 > iOS' 카테고리의 다른 글
Convenience init을 강제하는 법 (0) | 2020.11.29 |
---|---|
UICollectionView의 cellForItem이 nil이 나올 때 (0) | 2020.11.25 |
withIdentifier 하드코딩 말고 다른방법 (0) | 2020.10.11 |
Swift 3개 이상의 값 비교하기 (0) | 2020.10.11 |
Playground 기능 (0) | 2020.08.07 |