https://programmers.co.kr/learn/courses/30/lessons/77484
import Foundation
func solution(_ lottos:[Int], _ win_nums:[Int]) -> [Int] {
let notZeronums = lottos.filter{$0 != 0}
let winCnt = notZeronums.filter{win_nums.contains($0)}.count
let min = 0...1 ~= winCnt ? 6 : 7 - winCnt
let max = 0...1 ~= winCnt + lottos.count - notZeronums.count ? 6 : 7-(winCnt + lottos.count - notZeronums.count)
return [max, min]
}
클로저의 매개변수 이름이 굳이 불필요하다면 단축 인자이름을 활용할 수 있습니다.
단축 인자이름은 클로저의 매개변수의 순서대로 $0, $1, $2… 처럼 표현합니다.
result = calculate(a: 10, b: 10, method: {
return $0 + $1
})
print(result) // 20
// 당연히 후행 클로저와 함께 사용할 수 있습니다
result = calculate(a: 10, b: 10) {
return $0 + $1
}
print(result) // 20
~= 연산자는 대상이 특정 범위에 속하는지 범위를 체크하는 연산자 입니다.
저희가 많이 사용하는 switch 구문에 바로 이 ~= 연산자가 사용됩니다.
case 의 범위를 확인할 때 내부적으로 ~= 연산자가 불려서 사용되고 있는 것이죠.
~= 연산자는 비교 연산자 == 의 변형? 확장된 상태로 생각할 수 있겠습니다.
두 대상이 같은지 단순 비교할 때 == 연산자와 달리 대상이 어떤 범위에 속하는지 확인합니다.
숫자 5가 0~ 10 사이일 때 10을 곱해주려면 이렇게 할 수 있습니다.
var n = 5
if 0..<10 ~= n {
n *= 10
}
print(n) // 50