코드 Swift 방식의 당면 과제

1492 단어
저자: Erica Sadun, 원문 링크, 원문 날짜: 2016-06-28 번역자:MartinJoy;교정:bestswifter;마무리: CMB
오늘의 도전 문제는 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.

좋은 웹페이지 즐겨찾기