2017-12-29 47 views
-3

이것이 좋은 일이 아니라는 것을 알고 있습니다 만, 이것이 어떻게 작동하는지 매우 궁금합니다.신속한 함수 안에서 여러 개의 명명되지 않은 매개 변수를 참조하는 방법

나는 다음과 같은 함수를 생성하고 전화,하지만 난 참조 할 의미하지 않는 매개 변수

func printMultipleOf_v2(_ : Int, _ : Int) { 
    //how to reference parameters? 
} 
printMultipleOf_v2(2, 4) 
+0

그래, 내가 할 수있을 것 같아. 그것의 표를 얻는 것, 그래서 나는 당신의 대답에 기반을 둔 실제로 좋은 기술을 강조 할 것이라고 생각했습니다. –

+0

당신이 원한다면 그의 대답을 받아들이십시오. 또는 그것이 왜 좋은 대답인지 명확히하는 것이 합당하다고 생각한다면 그의 대답에 긍정적 인 코멘트를 추가하십시오. 또는 뭔가 중요한 것을 추가하려면 [자신의 답변 게시] (https://stackoverflow.com/help/self-answer)를 클릭하십시오. – Rob

+0

@RichHoffman 내 대답을 받아 들일 수 있습니다. – Xcoder

답변

2

매개 변수가 "무시 매개 변수"라고합니다을 참조하는 방법을 볼 수 없습니다 수 있습니다. 무시 된 매개 변수가 사용되는 이유는 this answer을 참조하십시오.

https://medium.com/swift-programming/facets-of-swift-part-4-functions-3cce9d9bba4에서 "무시 된 매개 변수는 메서드를 재정의하고 지정된 매개 변수를 사용하지 않는 것처럼 사용하지 않는 매개 변수의 이름을 가져 오지 않아도됩니다. 또는 클로저를 구현하고 주어진 매개 변수를 사용하지 마십시오. "

0

매우 흥미롭고 도전적입니다! 허가해서는 안 스위프트 4 구문 (스위프트 프로그래밍 언어 (스위프트 4)),보고 하지만, :

식별자가 identifier_head가에,

identifier → identifier-headidentifier-charactersopt 
identifier → `identifier-headidentifier-charactersopt` 
identifier → implicit-parameter-name 
identifier-list → identifier identifier,identifier-list 
identifier-head → Upper- or lowercase letter A through Z 
identifier-head → _ 
identifier-head → U+00A8, U+00AA, U+00AD, U+00AF, U+00B2–U+00B5, or U+00B7–U+00BA 
identifier-head → U+00BC–U+00BE, U+00C0–U+00D6, U+00D8–U+00F6, or U+00F8–U+00FF 
identifier-head → U+0100–U+02FF, U+0370–U+167F, U+1681–U+180D, or U+180F–U+1DBF 
identifier-head → U+1E00–U+1FFF 

그래서 여기에 정의해야합니다

parameter → external-parameter-nameoptlocal-parameter-nametype-annotation 
parameter → external-parameter-nameoptlocal-parameter-nametype-annotation... 
external-parameter-name → identifier 
local-parameter-name → identifier 

이 경우 매개 변수를 참조 할 수 없습니다. _은 외부 이름이 아니라 내부 이름입니다. 당신은 여전히 ​​xy를 참조 할 수 있지만 (결과

func printMultiple(_ x: Int, _ y: Int) { 
    // now use x and y 
} 

:이 매개 변수를 사용하려는 경우

+0

예, 컴파일 할 수 있습니다. 나는 그 코드를 놀이터에 넣고 컴파일했다. 그러나 xcoder의 대답을 살펴보면 이제 왜 그런지 이해할 수 있습니다. –

0

, 당신은 실제 매개 변수 이름을 단순히 _의 인수 레이블을 지정하지만 지정합니다 또는 무엇이든간에) 호출 지점에는 레이블이 필요하지 않습니다.

printMultiple(2, 4) 
0

대답은 할 수 없습니다. 이와 같은 매개 변수를 선언하면 컴파일러에서이를 무시하도록 명시하고 있습니다. 그들을 참조해야 할 경우 내부 이름을 부여하십시오 :

func printMultipleOf_v2(_ lhs: Int, _ rhs: Int) { 
    //how to reference parameters? 
    print(lhs, rhs) 
} 

"Do not do that"의 경우입니다.