일모도원(日暮途遠) 개발자

[Swift] ~= 연산자 본문

프로그래밍 언어/스위프트

[Swift] ~= 연산자

달님개발자 2022. 8. 8. 12:57

스위프트에는 ~= 라는 특이한 연산자가 있다. 

 

범위 연산자(영어 이름은 Expression Pattern 인거 같다)라고도 하는데 특정 값이 어떤 범위에 있는지 여부를 알려준다.

 

"범위 ~= 특정 값"의 형태로 사용하며 결과는 Bool값으로 반환 된다.

 

아래 예를 보면

0...10 ~= 5 는 5가 0~10사이에 있으므로 결과는 true이다. 

0...10 ~= 20 은 20이 0~10사이에 없으므로 결과는 false이다. 

let arrayA = 0...10
let a = arrayA ~= 5
let b = arrayA ~= 10
let c = arrayA ~= 20
print("result a : \(a)") //true
print("result b : \(b)") //true
print("result c : \(c)") //false

 

문자에 대해서도 사용가능하다.

"a"..."z" ~= "a" 는 a가 a~z사이에 있으므로 결과는 true이다. 

"a"..."z" ~= "1" 은 1은 a~z사이에 없으므로 결과는 false이다. 

 

아래로 테스트해보니 한글자라도 범위에 있으면 true를 반환하는거 같다.

"a"..."z" ~= "k1" 은 k가 a~z사이에 있으므로 결과는 true이다. 

"a"..."z" ~= "kk" 은 k가 a~z사이에 있으므로 결과는 true이다. 

let arrayB = "a"..."z"
let aa = arrayB ~= "a"
let bb = arrayB ~= "1"
let cc = arrayB ~= "k1"
let dd = arrayB ~= "kk"
print("result aa : \(aa)") //true
print("result ba : \(bb)") //false
print("result cc : \(cc)") //true
print("result dd : \(dd)") //true

 

if문에서도 아래처럼 사용할수 있다.

5가 0~10사이에 있으므로 true가 된다.

var i = 5
if 0...10 ~= i {
    print("\(i)는 범위내에 있습니다.")
} else {
    print("\(i)는 범위밖에 있습니다.")
}

 

https://docs.swift.org/swift-book/ReferenceManual/Patterns.html

 

Patterns — The Swift Programming Language (Swift 5.7)

Patterns A pattern represents the structure of a single value or a composite value. For example, the structure of a tuple (1, 2) is a comma-separated list of two elements. Because patterns represent the structure of a value rather than any one particular v

docs.swift.org

https://holyswift.app/expression-pattern-operator-in-swift/

 

Expression Pattern Operator in Swift - Holy Swift

This article explain all ranges flavours in Swift and how you can use the Expression Pattern Operator in Swift. Check it now!

holyswift.app