Xcode 8 : 함수 유형은 내 빌드를 깨는 인수를 생산할 수 없습니다.
어떤 방송에서 Swift는 사용자가 완료할지 선택한 변수 레이블을 제거하도록 강요하여 코딩의 가독성을 낮추기로 선택합니다. 나는 스위프트 토론을 읽더라도 여전히 실수라고 생각합니다. 그것을 그것을 선택적으로 만들 수 있습니다.
Xcode 8 사용하여 빌드 할 때-컴파일러가 Swift 2.3을 사용하는 방법을 강제하는 방법이 있습니까? 그래서 더 이상 버그 발생 오류가 발생하지 않았습니까? 레거시 Swift (빌드 설정 아래)를 사용하는 옵션을 업데이트했지만 여전히이 오류가 발생하는 것입니다.
함수 유형은 'isloggedIn'인수 레이블을 수 없습니다. 대신 '_'사용
완성 된 가용성에서 레이블을 어떻게 사용할 수 있습니까?
Swift 디자이너는 함수 유형에 대한 인수 레이블을 금지하기로 결정했습니다.
그 이유는 여기에 설명되어 있습니다 : https://github.com/apple/swift-evolution/blob/master/proposals/0111-remove-arg-label-type-significance.md
인수 레이블을 금지하면 클로저를 잘못 호출하는 것이 훨씬 중단되고 언어의 유형 시스템을 단순화하는 것보다 더 중요해 보이기 때문에 실망스럽고 의심스러운 선택입니다.
사용성> 이데올로기.
적절한 할 해결 방법입니다. 할 수없는 일 :
func doStuff(completion: (foo: Int, bar: String) -> Void) {
...
completion(foo: 0, bar: "")
}
...하지만 다음과 같이 할 수 있습니다.
func doStuff(completion: ((foo: Int, bar: String)) -> Void) {
...
completion((foo: 0, bar: ""))
}
즉,이 경우에는 튜플 인 클로저에 이름이 지정되지 않은 단일 인수가 있습니다 (foo: Int, bar: String)
.
그 자체로드 추악하지만 인수 레이블은 유지합니다.
면책 조항 :이 접근 방식의 또는 성능 영향에 대해 생각하지 않습니다.
위의 정보에 따르면 문제를 실제로 해결하고 수행자가 다음과 같이 인수 레이블을 선택 사항으로 만들기위한 제안을 제기하는 것입니다.
- 개발 속도를 향상시킬 수 있습니다.
- 오류 결함 : (오류 부울 값을 예상하는 항목과 잘못된 처리기 항목으로 인해 여러 오류가 발생했습니다)
- 팀 구성원이 코드를 더 쉽게 읽을 수 있습니다. 모든 사람이 팀원이 한 명 뿐인 것은 아니 다른 사람의 코드를 쉽게 선택할 수 있습니다.
- 마지막으로 좋은 프로그래밍 관행은 솔루션이 개발중인 실제 항목과 비슷해야한다는 것을 의미합니다.
completionhandler: (newvalues, nil)
관리되는 항목보다 덜 우울.completionhandler(results: newValue, error:nil)
나는 읽는 사람들이 신청하기 전에 이것에 대한 보도 기사를 제출하기 전에 지원하는 다른 사람들이 있음을 보여줄 수 있기를 바랍니다.
편집 : 여기에 피치를 제출했습니다 : https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20161010/028083.html 동의 한 것으로 보입니다. 그것이 일어날 것 같지만 토론은 그것이 가능한 것이 높음)
_를 사용하여 고유 한 변수의 이름을 지정하지 않는다. 각 변수에 _를 붙인 다음 맹목적으로 함수를 호출하는 대신 래퍼를 만드는 것이 좋습니다.
함수 유형에 대한 명명 된 변수를 잃으면 잘못된 값으로 함수를 호출 할 위험이 더 커지하고 함수에 대한 유일한 변수가있는 것이 좋습니다.
이렇게하면 지정되고 함수의 필드에 이름이 지정되고 함수에 값 유형은 한 가지뿐입니다. 더 복잡하지만 그렇게 할 수없는 것입니다. 최소한 이렇게하면 더 안전 해지고 덜 더러워 질 것입니다.
struct LineNoteCellState {
var lineNoteText: String?
var printOnInvoice = false
var printOnLabel = false
}
다음은 사용되는 예입니다.
cell.configure(editCallback: { (_ state: LineNoteCellState) in
self.lineNoteText = state.lineNoteText
self.printOnInvoice = state.printOnInvoice
self.printOnLabel = state.printOnLabel
})
반 해결 방법, _
completion: (_ success: Bool) -> Void
'ProgramingTip' 카테고리의 다른 글
htaccess는 기본 인증에서 하나의 URL을 제외합니다. (0) | 2020.10.29 |
---|---|
항아리 불일치! (0) | 2020.10.29 |
wordpress.com에서 블로그 코드를 작성하는 방법 (0) | 2020.10.29 |
메모리에 테이블 형식 데이터를 유지하기위한 데이터 구조? (0) | 2020.10.29 |
Python에 개체 고유 식별자가 있습니까? (0) | 2020.10.29 |