/ / Swift dopasowanie wzorca przełącznika z tablicami - iOS, tablice, swift, instrukcja switch

Swift przełącza wzorce pasujące do tablic - ios, arrays, swift, switch-statement

Ciekawe, czy w Swift można wykonać następujące czynności.

let foo = [1, 2, 3]
let bar = [4, 5, 6]

let value = 5

switch value {
case in foo
print("5 is in foo")
case in bar
print("5 is in bar")
default:
break
}

Rozumiem, że istnieją inne sposoby, dzięki którym ten wymyślony przykład działa, np case 4, 5, 6: lub nie używając przełącznika i zamiast tego używając bar.contains(value) ale szukam rozwiązania obejmującego dopasowanie wzorca przełącznika do tablicy. Dzięki!

Odpowiedzi:

17 dla odpowiedzi nr 1

Możesz zdefiniować niestandardowy operator dopasowania wzorca ~= która przyjmuje tablicę jako „wzór” i wartość:

func ~=<T : Equatable>(array: [T], value: T) -> Bool {
return array.contains(value)
}

let foo = [1, 2, 3]
let bar = [4, 5, 6]

let value = 5

switch value {
case foo:
print("(value) is in foo")
case bar:
print("(value) is in bar")
default:
break
}

Podobne operatory już istnieją, np. dla przerw:

public func ~=<I : IntervalType>(pattern: I, value: I.Bound) -> Bool

17 dla odpowiedzi nr 2

Co powiesz na:

let foo = [1, 2, 3]
let bar = [4, 5, 6]

let value = 5

switch value {
case _ where foo.contains(value):
print("(value) is in foo")
case _ where bar.contains(value):
print("(value) is in bar")
default:
print("(value) is not in foo or bar")
}