코드 Swift 방식의 당면 과제
오늘의 도전 문제는 Swift Users 메일 그룹의 Adriano Ferreira입니다.그의 출발점은 체인 호출을 간소화하려는 것이지만, 코드를 더욱 스wifter하게 하려면, 보기 좋은 체인 문법만으로는 부족하다.
func selectionSort(_ array: [Int]) -> [Int] {
guard array.count > 1, let minElement = array.min() else {
return array
}
let indexOfMinElement = array.index(of: minElement)!
// All of this just to filter out the first smallest element and return the rest
// Also tried ‘suffix(from:)' here, but couldn’t make it work properly
let rest = array.enumerated()
.filter({ index, _ in index != indexOfMinElement })
.map({ _, element in element })
return [minElement] + selectionSort(rest)
}
Swifter 향상 방법
우선 실용성.비록 0개나 원소의 수조에 대해서도 나는 코드를 추가해서 이러한 조건을 테스트하는 것이 실용적이라고 생각하지 않는다.나는 코드를 직접 순서대로 집행하는 것이 더 좋은 선택이라고 생각한다. 설령 이렇게 한 요소만 있는 상황이 완벽하지는 않더라도.
그 다음, 일관성.나는 최소치를 먼저 찾은 다음에 색인을 찾는 것을 좋아하지 않는다.매거는 이 두 조작을 직렬로 연결하는 것을 허용한다.
셋째, 스타일.그룹의 반복은 모듈 형식
(index: Index, value: Element)
을 되돌려야 합니다.그러나 예시가 그렇게 되지 않았기 때문에, 나는 이 기회를 빌려 수조를 확장해서 이런 유형의 원조를 지원하도록 하고 싶다.동시에 나의 방안은 그가 필요로 하는 답안보다 좀 더 복잡하다. 왜냐하면 나는 $0.value
과$1.index
를 사용하고 싶지 않기 때문이다$0.1
와$1.0
를 사용하고 싶지 않기 때문이다.내가 새로 디자인한 코드가 여기 있으니 당신도 당신의 그 코드를 공유해 주십시오!
이 문서는 SwiftGG 번역팀에서 번역하였으며, 작성자 번역 승인을 받았습니다. 최신 기사는http://swift.gg.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.