Déterminer si une Gamme contient une valeur

J'essaie de trouver un moyen pour déterminer si une valeur est comprise dans une Range en Swift.

Fondamentalement, ce que je suis en train de faire, c'est adapter l'une de l'instruction switch exemples de faire quelque chose comme ceci:

let point = (1, -1)
switch point {
case let (x, y) where (0..5).contains(x):
    println("(\(x), \(y)) has an x val between 0 and 5.")
default:
    println("This point has an x val outside 0 and 5.")
}

Aussi loin que je peux dire, il n'y a pas construit de la manière de faire ce que mon imaginaire .contains méthode ci-dessus ne.

J'ai donc essayé de prolonger la Range classe. J'ai terminé la course à pied sur des problèmes avec les génériques si. Je ne peux pas étendre Range<Int> j'ai donc essayer de l'étendre Range lui-même.

Le plus proche que j'ai eu était de cela, mais il ne fonctionne pas depuis >= et <= ne sont pas définies pour ForwardIndex

extension Range {
    func contains(val:ForwardIndex) -> Bool {
        return val >= self.startIndex && val <= self.endIndex
    }
}

Comment pourrais-je aller sur l'ajout d'un .contains méthode pour Range? Ou est-il une meilleure façon de déterminer si une valeur se situe dans une fourchette?

Edit2: Cela semble fonctionner pour étendre Range

extension Range {
    func contains(val:T) -> Bool {
        for x in self {
            if(x == val) {
                return true
            }
        }

        return false
    }
}

var a = 0..5
a.contains(3) //true
a.contains(6) //false
a.contains(-5) // false

Je suis très intéressé par la ~= opérateur mentionné ci-dessous si, à la recherche dans le maintenant.

InformationsquelleAutor Brad Dwyer | 2014-06-03