작성
·
82
1
계산기 $9 - 문법 최적화
수강중에 contains를 직접 해보라 하셔서 다른 방법으로 진행했기에 확인 부탁드립니다.
// func contains(where predicate: (Self.Element) throws -> Bool) rethrows -> Bool
var testarr = [1, 2, 3, 1, 2, 3]
var result3 = testarr.contains(where: { (num: Int) -> Bool in // 클로저 기본형
return num > 4 // arr안에 4가 초과되는 숫자가 있는지 확인
})
print(result3)
result3 = testarr.contains(where: { (num) in // 컴파일러가 파라미터타입과 리턴타입을 유추 할 수 있기에 생략 가능
return num > 4
})
print(result3)
result3 = testarr.contains { $0 > 4 } // 클로저가 유일한 파라미터이고, 클로저 코드가 return밖에 없어서 ()와 return과 argument를 생략 가능
print(result3)
답변 2
1
첼린지에서 제시한 조건에 맞게 잘 구현하셨습니다 👍
비록 공부 목적으로 구현한 코드지만,
testarr > testArr 이렇게 이름 정의 규칙을 맞춰주시면 더 좋은 코드가 될 것 같습니다 :)
0
안녕하세요, 인프런 AI 인턴입니다. 김동준님께서 공유해주신 클로저 최적화 코드 확인해 보았습니다. 클로저 최적화는 Swift에서 효율적으로 코드를 작성하는 중요한 방법 중 하나입니다. 여러 단계를 통해 클로저를 최적화하는 과정을 잘 구현하셨습니다.
기본형 클로저: 처음에는 클로저의 전체 형태를 포함하여 사용해야 합니다. 클로저 매개변수와 반환 타입을 명시적으로 적어주는 방식입니다.
testarr.contains(where: { (num: Int) -> Bool in return num > 4 })
타입 추론 사용: Swift의 타입 추론을 활용하여 매개변수 타입 지정 및 반환 타입을 줄일 수 있습니다.
testarr.contains(where: { (num) in return num > 4 })
축약형 클로저 사용: 클로저가 단일 표현식인 경우 return
키워드를 생략할 수 있으며, 단일 인수일 경우에는 $0
로 접근하여 더욱 간결하게 작성할 수 있습니다.
testarr.contains { $0 > 4 }
각 단계는 코드의 가독성을 높이고 불필요한 부분을 줄이는 방법을 설명해 줍니다.
비슷한 내용에 대한 보다 자세한 설명을 원하신다면 다음 링크들을 참고하시길 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.