한 값과 여러 값을 비교하는 방법 - Swift


Answers

let valuesArray = ["ab","bc","cd"]

valuesArray.contains(str) // -> Bool
Question

코드가 있다고 가정 해 보겠습니다.

if stringValue == "ab" || stringValue == "bc" || stringValue == "cd" {
    // do something
}

이 조건을 줄이거 나 미완성화할 수있는 방법이 있습니까 (스위치 문을 사용하지 않는 것이 좋음). 나는이 코드가 작동하지 않는다는 것을 안다.

if stringValue == ("ab" || "bc" || "cd") {
    // do something
}

다른 언어에 대한 몇 가지 복잡한 솔루션을 보았지만 특정 언어로 보일 수 있으며 Swift에는 적용되지 않습니다. 어떤 해결책을 주시면 감사하겠습니다.




String 에 여러 값이 포함되어 있는지 테스트하려면 다음과 같은 extension 설정할 수 있습니다.

extension String: {
 func containsStrings(other: [String]) -> Bool {
     for string in other {
         if self.containsString(string) {
             return true
         }
     }
     return false
 }
}

그리고 그것을 사용하려면 :

let stringValue = "apple"

if stringValue.containsStrings(["ab", "bc", "le"]) {
 //Do something
}



if someArray.contains(object) {
  // contains
 } else {
  // does not contains
  }

위의 함수는 bool 값을 반환하고 그에 따라 논리를 작성합니다.




다음과 같은 확장을 생성 할 수 있습니다.

extension Equatable {
    func oneOf(other: Self...) -> Bool {
        return other.contains(self)
    }
}

다음과 같이 사용하십시오.

if stringValue.oneOf("ab", "bc", "cd") { ... }

그것을 입력 해 주신 impl에 대한 크레딧 : https://gist.github.com/daehn/73b6a08b062c81d8c74467c131f78b55/




나는 알고있다, 당신은 이것 같이 무언가를 할 수있다,

let validStrings = Set<String>(arrayLiteral:"ab", "bc", "cd")
if validStrings.contains(str) {
    //do something      
}