Development Tip

_ : Swift에서 나에게 말하는 것은 무엇입니까?

yourdevel 2020. 12. 14. 20:54
반응형

_ : Swift에서 나에게 말하는 것은 무엇입니까?


함수 정의에서 단독 밑줄은 무엇을 의미합니까?

예 : map(_:)

함수를 정의 할 때 다음을 수행 할 수 있음을 이해합니다.

func myFunc(_ string: String) { ... }

그런 다음이를 myFunc(_:)대신 myFunc(_string:), 즉 의도적으로 매개 변수 이름을 숨 깁니다.


Swift는 함수 이름 자체 (괄호 앞)뿐만 아니라 매개 변수의 외부 이름을 포함하여 함수의 이름이 무엇인지 말하는 규칙이 필요합니다. 관례는 이름 뒤에 콜론이 오는 것입니다. 그래서 다음은 함수 선언입니다 (Swift 2.0에서) :

func myFunc(param1 param1:String, param2:String, param3:String) {}

그 함수의 이름은 다음과 같습니다.

myFunc(param1:param2:param3:)

그러나 실생활에서는 하나 이상의 매개 변수가 어떤 이름도 외부화하지 않을 가능성이 있습니다. 따라서 해당 이름에 대한 자리 표시자가 필요합니다. 밑줄은 그 자리 표시 자입니다. 마치 밑줄이 이름의 외부화를 억제하는 선언의 기호 인 것처럼 말입니다. 그래서 다음은 또 다른 함수 선언입니다 (Swift 2.0에서) :

func myFunc2(param1:String, _ param2:String, _ param3:String) {}

그 함수의 이름은 다음과 같습니다.

myFunc2(_:_:_:)

[여기에서는 Swift 2.0 사양이 중요합니다. Swift 2.0에서 첫 번째 매개 변수 이름은 항상 기본적으로 외부화 되지 않으며 다른 매개 변수 이름 기본적으로 외부화됩니다. Swift 1.2 이전 버전에서 외부화 규칙은 선언이 나타난 위치에 따라 달라졌는데, 불필요하게 일관성이없고 혼란 스러웠습니다.]


_매개 변수의 이름되지 않는다는 것을 정의하는 데 사용됩니다

여러 개가있는 경우 _함수 호출에서 매개 변수 이름을 지정할 필요가 없음을 나타냅니다.

func myFunc(name:String, _ age:String){
}

myFunc(“Milo", "I'm a really old wizard")

밑줄을 사용하지 않으면

myFunc(“Milo”, age: "I'm a really old wizard")

_함수 호출에 필요하지 않습니다. 이름이없는 무언가를 나타내는 데 사용됩니다.

함수를 참조하는 방법과 관련하여 함수 호출을 위해 이름을 전달할 필요가 없습니다.
그러나 매개 변수 유형을 정의하지 않았기 때문에 이것은 잘못된 예제처럼 보입니다 (적어도 신속한 2.0의 xCode 7에서는 작동하지 않습니다)

편집 :
신속한 3.0 이후

myFunc(name: “Milo”, age: "I'm a really old wizard")

사용되어야한다


함수를 참조 할 때 모호성을 없애기 위해 예상되는 매개 변수의 외부 이름과 함께 함수 이름을 제공해야합니다.

예를 들면

func myFunc(myString string: String) { ... }

func myFunc(_ string: String) { ... }

represent two different functions, one where an external label is provided for the first String parameter when the function is called and the other where no label is used, as in:

myFunc(myString: "hi")

and

myFunc("hi")

So, in order to identify a function we include the external label for each parameter where ':' indicates that a parameter is to be provided - e.g. yourFunc(arg1:arg2:) will take 2 arguments.

When no external label is used, we place an underscore ('_').

For the 2 functions given above, we would uniquely identify them using:

myFunc(myString:) and myFunc(_:)

참고URL : https://stackoverflow.com/questions/30876068/what-is-in-swift-telling-me

반응형