반응형
스위프트의 연산자
최근 Apple에서 Advanced NS Operations 샘플 앱을 다운로드하여 이 코드를 찾았습니다.
// Operators to use in the switch statement.
private func ~=(lhs: (String, Int, String?), rhs: (String, Int, String?)) -> Bool {
return lhs.0 ~= rhs.0 && lhs.1 ~= rhs.1 && lhs.2 == rhs.2
}
private func ~=(lhs: (String, OperationErrorCode, String), rhs: (String, Int, String?)) -> Bool {
return lhs.0 ~= rhs.0 && lhs.1.rawValue ~= rhs.1 && lhs.2 == rhs.2
}
사용하는 것으로 보입니다.~=
에 반대하는 교환수.Strings
그리고.Ints
하지만 전에 본 적이 없어요
그것은 무엇일까요?
범위를 구성할 수 있으며 "~="는 "범위"를 의미합니다.(다른 사람들은 이론적인 세부 사항을 더 추가할 수 있지만, 의미는 이것입니다.)"포함"으로 읽습니다.
let n: Int = 100
// verify if n is in a range, say: 10 to 100 (included)
if n>=10 && n<=100 {
print("inside!")
}
// using "patterns"
if 10...100 ~= n {
print("inside! (using patterns)")
}
n의 값으로 시도합니다.
HTTP 응답의 예로 널리 사용됩니다.
if let response = response as? HTTPURLResponse , 200...299 ~= response.statusCode {
let contentLength : Int64 = response.expectedContentLength
completionHandler(contentLength)
} else {
completionHandler(nil)
이 연산자는 에서 패턴 매칭에 사용됩니다.case
진술.
여기에서 자체 구현을 제공하는 솔루션을 사용하고 활용할 수 있는 방법을 참조하십시오.
- http://oleb.net/blog/2015/09/swift-pattern-matching/
- http://austinzheng.com/2014/12/17/custom-pattern-matching/
다음은 사용자 정의를 정의하고 사용하는 간단한 예입니다.
struct Person {
let name : String
}
// Function that should return true if value matches against pattern
func ~=(pattern: String, value: Person) -> Bool {
return value.name == pattern
}
let p = Person(name: "Alessandro")
switch p {
// This will call our custom ~= implementation, all done through type inference
case "Alessandro":
print("Hey it's me!")
default:
print("Not me")
}
// Output: "Hey it's me!"
if case "Alessandro" = p {
print("It's still me!")
}
// Output: "It's still me!"
func ~=<I : IntervalType>(pattern: I, value: I.Bound) -> Bool
func ~=<T>(lhs: _OptionalNilComparisonType, rhs: T?) -> Bool
func ~=<T : Equatable>(a: T, b: T) -> Bool
func ~=<I : ForwardIndexType where I : Comparable>(pattern: Range<I>, value: I) -> Bool
언급URL : https://stackoverflow.com/questions/38371870/operator-in-swift
반응형
'IT' 카테고리의 다른 글
powershell을 사용하여 경로에서 최근에 만든 폴더 가져오기 (0) | 2023.08.06 |
---|---|
jQuery: 확인란을 선택하지 않은 경우 테스트 (0) | 2023.08.06 |
응답 유형에 적합한 HttpMessageConverter를 찾을 수 없습니다. (0) | 2023.08.06 |
쿼리선택기 대 getElementBy이드 (0) | 2023.08.06 |
구독에서 관찰 가능한 항목을 반환하는 방법 (0) | 2023.08.06 |