본문 바로가기

iOS/Swift

Swift) 범위 연산자( a...b / a..<b / ...a / ~= )

 

 

 

안녕하세요~ 소들입니다!!

오늘은 간단한 Swift 문법에 대해 다뤄보려고 합니다

그있잖아여 for-in 반복문 돌리다 보면 보이는

0..<1

0...1

0...

이런 것들에 대해서!

또한 ~= 라는 범위 (확인?) 연산자에 대해서 다루려고 합니당

모든 포스팅은 편의 말투로 합니다~!!

 

 

 

 

1. 범위 연산자

 

1-1. 닫힌 범위 연산자(Closed Range Operator)

 

a...b

a 이상 b 이하

 

위처럼 시작과 끝이 정해져 있는 범위 연산자로,

그 가운에 ... (점 세개)를 표시함!!

이렇게 할 경우, 위에서 설명한대로 a 이상 b 이하의 범위가 잡힘

 

만약 1...5 이라는 범위를 정할 경우,

이는 

 

 

이렇게 양 끝 범위인 1, 5를 포함한 범위연산자란 것!!!

 

 

 

1-2. 반 닫힌 범위 연산자(Half-Open Range Operator)

 

a..<b

a 이상 b 미만

 

반 닫힌 범위 연산자처럼 시작과 끝이 정해져 있는 범위 연산자로,

그 가운에 ..< 를 표시함!!

이렇게 할 경우, 위에서 설명한대로 a 이상 b 미만의 범위가 잡힘

 

만약 1..<5 이라는 범위를 정할 경우,

이는 

 

 

보통 배열의 마지막 인덱스까지 순회할 때, 배열의 크기 -1 만큼 돌아야 하잖음?

배열은 인덱스가 0부터이기 때문에!!

따라서, 반 닫힌 범위 연산자는 배열을 다룰 때 용이

 

 

let array: [Int] = [12345]
 
for index in 2..<array.count {
    print(array[index])                // 3, 4, 5
}
 

 

 

요런 식으루!!

 

 

 

1-3. 단방향 범위(One-Side Ranges)

 

...a

a...

..<a

 

단방향 범위 연산자는 앞서 공부했던 닫힌 범위 연산자 / 반 닫힌 범위 연산자를 쓸 때

시작과 끝 범위 중 하나만 정해주는 연산자

이건 배열로 이해하는 게 훨 쉬울듯!!

 

 

let array: [Int] = [12345]
 
for element in array[...3] {
    print(element)                    // 1, 2, 3, 4
}
 
for element in array[3...] {
    print(element)                    // 4, 5
}
 
for element in array[..<3] {
    print(element)                    // 1, 2, 3
}
 

 

 

위처럼 단방향으로 범위를 정해준 경우,

...3 / ..<3 일 때는

배열에선 최소 범위로 지정할 수 있는 0번 째 인덱스부터 지정된 인덱스(3 or 2)까지 범위가 잡히는 거고

3... 일 때는

지정된 인덱스(3)부터 배열에서 최대 범위로 지정할 수 있는 마지막 인덱스까지 범위가 잡히는 것임!

 

 

요런 식으로!!!

왜 이아이만 배열로 예를 드냐면,

 

 

 

위처럼 설정할 경우,,,,,, 시작 범위가 없기 때문에 

어디서부터 범위가 시작되어야 할지를 알 수가 없엉...

(배열의 경우는 무조건 0번이 시작 범위이기 때문에 가능했던 것)

 .. 뭐 그에 따라서 에러가 뜸

 

반대로, 

시작범위가 다음과 같이 양수로 정해진 경우에 단방향 범위를 쓰면

 

 

 

 

시작 범위는 잡혀서 에러가 뜨진 않지만..

끝 범위가 정해져 있지 않아, 범위 자체가 5 ~ 무한대로 잡히기 때문에,,

몇초 사이에 5785번 실행해버림;;

위처럼 사용한느 것은 미친짓입니다.. 하지마십셔,,,;;

 

 

 

 

2. ~= : 범위 안에 값이 속하는지 확인하는 연산자

 

~= 연산자는 범위 안에 해당 값이 속하는지 확인하는 연산자로,

리턴 값은 Bool이다

 

나는 생각보다 위의 연산자를 사용하는 것을 많이 본 적이 없는데,

예로 보여드리자면

 

 

let range = 1..<5
 
range ~= 1      // true
range ~= 5      // false
 

 

 

위처럼 쓸 수 있따

 

 

 

 

 

 

 

.

.

.

~=는 잘 몰랐던 연산자인데, 사용할 일이 있으면 유용할듯 합니당 :)

잘못된 내용 및 피드백 댓글 대환영!!



Calendar
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
최근 댓글
Visits
Today
Yesterday