이지만, 일반적으로 밑줄이 "이 무시"을 의미하는 반면, 제 이름으로
는 이름
divmod(_:_:)
이다.
새로운 기능을 선언
는 밑줄 호출 할 때 매개 변수에 레이블이없는 것을 스위프트 알 - 그건 당신이보고있는 경우입니다. 풀러 함수 선언은 다음과 같습니다 :
func myFunc(label name: Int) // call it like myFunc(label: 3)
는 "라벨은"인수 라벨, 당신은 함수를 호출 할 때 있어야합니다. (스위프트 3 이후에는 기본적으로 모든 인수에 레이블이 필요합니다.) "name"은 함수 내에서 사용하는 인수에 대한 변수 이름입니다. 더 짧은 형태는 다음과 같습니다
func myFunc(name: Int) // call it like myFunc(name: 3)
이 외부 인자 라벨과 내부 매개 변수 이름에 동일한 단어를 사용 할 수있는 바로 가기입니다. func myFunc(name name: Int)
과 같습니다.
매개 변수 레이블없이 함수를 호출 할 수있게하려면 밑줄 _
을 사용하여 레이블을 아무 것도/무시하지 않도록합니다. (이 경우 매개 변수를 사용하려면 내부 이름을 제공해야합니다.밑줄이 "아무것도 지정하지"를 의미 할당 문에서
func myFunc(_ name: Int) // call it like myFunc(3)
)
. 결과를 반환하지만 반환 값을 신경 쓰지 않는 함수를 호출하려는 경우이 옵션을 사용할 수 있습니다.
_ = someFunction()
기사에서 당신이 반환 된 튜플의 한 요소를 무시하는 링크처럼 또는 : 당신이 어떤 정의 함수 유형을 구현하는 폐쇄를 쓸 때
let (x, _) = someFunctionThatReturnsXandY()
, 당신이 할 수있는 특정 매개 변수를 무시하려면 밑줄을 사용하십시오. 프로토콜을 채택하거나 슈퍼 클래스 메소드를 오버라이드 (override) 함수를 선언 할 때
PHPhotoLibrary.performChanges({ /* some changes */ },
completionHandler: { success, _ in // don't care about error
if success { print("yay") }
})
마찬가지로, 당신은 매개 변수를 무시하는 매개 변수에 대한 이름을 _
를 사용할 수 있습니다. 프로토콜/수퍼 클래스는 매개 변수에 레이블이 없다는 것을 정의 할 수도 있기 때문에 연속으로 두 개의 밑줄로 끝날 수도 있습니다.
class MyView: NSView {
override func mouseDown(with _: NSEvent) {
// don't care about event, do same thing for every mouse down
}
override func draw(_ _: NSRect) {
// don't care about dirty rect, always redraw the whole view
}
}
다소 지난 스타일 관련 : 로컬 변수를 결합하는 흐름 제어 구조를 사용하는 경우/상수이를 무시 _
를 사용할 수있다. 이 같이 switch 문에서 튜플 케이스를 결합하는 경우
for _ in 1...20 { // or 0..<20
// do something 20 times
}
는 밑줄이 와일드 카드로 작업 할 수 있습니다 : 예를 들어, 회원에 액세스 할 필요없이 순서를 반복하려면 예 (The Swift Programming Language 하나에서 단축) :
switch somePoint { // somePoint is an (Int, Int) tuple
case (0, 0):
print("(0, 0) is at the origin")
case (_, 0):
print("(\(somePoint.0), 0) is on the x-axis")
case (0, _):
print("(0, \(somePoint.1)) is on the y-axis")
default:
print("(\(somePoint.0), \(somePoint.1)) isn't on an axis")
}
위대한 설명, 당신에게 선생님 감사합니다! –
아주 좋은 유스 케이스를 잊어 버린 것 같아요. 때로는 배열이나 사전에있는 ** 번호 **에만 관심이 있고 실제 값에는 관심이없는 * 경우 *가 있습니다. 그래서 당신은'forArray {do stuff} '와 같은 것을합니다. 일반적으로 값을 신경 쓰면 'someArray {do stuff}'의 객체에 대해 ' – Honey
좋습니다. 나는 그것을 추가했다. – rickster