J'imagine que allValues renvoie une séquence est qu'on peut donc l'indicer si nécessaire. (J'imagine parce que j'ai énormément de mal à trouver les informations dans la doc de Xcode).
Pour donner un (mauvais) exemple, si je voulais remplacer ça:
for component in 1..<3 {
(donc, seulement y et z)
Ce qui me gêne dans la solution de l'enum, c'est le manque de flexibilité. Mon problème n'est pas de faire le code le plus robuste possible, mais le plus expressif possible.
Oui, on peut indicer allValues mais pour utiliser les Ints avec le code qui attend les Vector.Index, il faudrait utiliser Vector.Index(rawValue: component) pour convertir l'Int. Mais, là , on aurait le même problème que le rawValue pourrait dépasser les limites.
Juste une idée mais, pour BoundingBox, as-tu pensé d'implémenter l'opérateur "Pattern Match" ( ~= ) pour déterminer si un vecteur se trouve là dedans ou non ?
Juste une idée mais, pour BoundingBox, as-tu pensé d'implémenter l'opérateur "Pattern Match" ( ~= ) pour déterminer si un vecteur se trouve là dedans ou non ?
Non, et je découvre le ~=. Mais je t'avoue que je ne saisis pas ta question, n'ayant qu'un seul if dans la méthode isHitBy(). La méthode doit pouvoir renvoyer false le plus rapidement possible. Statistiquement, on s'attend à avoir beaucoup plus de false que de true.
Réponses
Je ne peux plus écrire:
Une idée
J'imagine que allValues renvoie une séquence est qu'on peut donc l'indicer si nécessaire. (J'imagine parce que j'ai énormément de mal à trouver les informations dans la doc de Xcode).
Ce ne devrait pas être nécessaire d'indicer allValues parce que chaque membre est de type Vector.Index, qui contient le rawValue de l'enum.
Qu'est-ce que tu crois que tu manque ?
(donc, seulement y et z)
Ce qui me gêne dans la solution de l'enum, c'est le manque de flexibilité. Mon problème n'est pas de faire le code le plus robuste possible, mais le plus expressif possible.
Ah! Je pige.
Oui, on peut indicer allValues mais pour utiliser les Ints avec le code qui attend les Vector.Index, il faudrait utiliser Vector.Index(rawValue: component) pour convertir l'Int. Mais, là , on aurait le même problème que le rawValue pourrait dépasser les limites.
Juste une idée mais, pour BoundingBox, as-tu pensé d'implémenter l'opérateur "Pattern Match" ( ~= ) pour déterminer si un vecteur se trouve là dedans ou non ?
Cela me hérisse de voir cette syntaxe, avec une valeur finale-1. On dirais du C des années 80.
Pourquoi est-ce que tu n'utilises pas la formulation moderne en Swift :
f
Car il veut utiliser :
::)
Oui, il itére de 1 à 3-1 dans son (mauvais) exemple. Et de 0 à 3-1 dans son vrai code :
Oui, c'est une affaire de perception. Pour ma part, j'ai toujours détesté les boucles se terminant sur une valeur finale-1.
Mais je t'avoue que je ne saisis pas ta question, n'ayant qu'un seul if dans la méthode isHitBy(). La méthode doit pouvoir renvoyer false le plus rapidement possible. Statistiquement, on s'attend à avoir beaucoup plus de false que de true.