Comment puis-je créer une classe statique dans Swift?
Je cherche à créer une classe statique appelé VectorCalculator. Peut-être que cette fonction devrait être placé dans ma classe Vector (similaire à NSString --stringByAppendingString
méthode en Obj-C)... et si vous pensez que... laissez-moi savoir.
De toute façon je veux ajouter un couple de fonctions statiques d'une classe statique appelé VectorCalculator. Il va calculer le "produit scalaire" et le retour d'un Vecteur. Une autre fonction sera probablement de calculer et de retour de l'angle entre deux vecteurs.
Un) quelqu'un Aurait-il aller dans cette voie de la création d'une classe statique ou
B) dois-je simplement ajouter ces fonctions comme exemple les fonctions de la classe Vector, tels que... public func dotProductWithVector(v: Vector) -> Vector
et public func angleWithVector(v: Vector) -> Double
. Et puis ces deux argument vecteurs v sera appliquée au Vecteur classes Vecteur principal u.
Quel est l'avantage d'aller soit A ou B?
Si vous pensez que B, juste pour référence future, comment voulez-vous créer un ensemble statique de la classe dans Swift?
Qu'est-ce que
static class
?Je suis très confus avec votre approche. Pourquoi faites u ont besoin les classes statiques ici .
R u recherche d'similaire à la classe singleton - thread-safe?, mais pour votre req. il est inutile de l'utiliser. OU niveau de la Classe de méthodes ?
Il n'y a pas de les classes statiques en Swift. Ce dont vous parlez s'appelle méthodes statiques. Sujet de votre question: les deux approches sont possibles. Cependant, dans votre cas, je aller avec les structures et non des classes, parce que le Vecteur est essentiellement un type de valeur. Plus loin, vous êtes probablement mieux avec les opérateurs définis pour ces vecteurs.
OriginalL'auteur chris P | 2016-01-25
Vous devez vous connecter pour publier un commentaire.
Si j'ai bien compris vous êtes intéressé par les méthodes de Type dans le cas A. Vous indiquer les méthodes de type en écrivant le mot-clé static devant la méthode func mot-clé. Les Classes peuvent également utiliser le mot-clé class pour permettre à des sous-classes pour remplacer la super-classe de mise en œuvre de cette méthode. (c)
Que pour les avantages de la B il dépend des tâches que vous résolvez. Si vous voulez laissé d'origine vecteurs non modifiée, il est plus pratique d'utiliser Une variante. Mais je pense que vous pourriez fournir à la fois des types de fonctionnalités.
Assurez-vous. En fait, cette déclaration n'était pas correct, donc j'ai édité ma réponse. Afin d'être en mesure d'utiliser passées en paramètre dans la méthode de son corps, le paramètre doit avoir locales nom du paramètre par exemple
func method(localNameFirst: Vector, localNameSecond: Vector){}
. Il y a aussi des paramètres Extérieurs. Ils sont comme des étiquettes d'augmenter la lisibilité de votre code. Dans ma réponse à cette étiquette externe(paramètre) est withVector. Il est expliqué ici dans la section "Locaux et Externes Noms des paramètres des Méthodes".Cela me trompe ou Swift changé à ce sujet? Si vous n'avez qu'un seul nom d'un paramètre, il agit à titre de noms internes et externes, de faire votre premier argument obligatoire nommé paramètre de la fonction:
VectorCalculator.dotProductOfVector(vec1: vec1, withVector: vec2)
Pour permettre le premier paramètre à ne pas être nommé, vous devez déclarer l'argument en-tête de la fonction comme ceci:static func dotProductOfVector(_ vec1: Vector, withVector vec2: Vector) -> Vector
. Peut-être que Swift a été changé à ce sujet? Je suis encore à apprendre, mais cela semble être la façon correcte lorsque essayant des choses.OriginalL'auteur curious
static
signifie pas d'exemple, je voudrais donc faire une struct sans initialiseur:OriginalL'auteur Cœur
Je pense que ce que vous recherchez sont des fonctions de classe?
Peut-être que votre Réponse peut être trouvée ici.
Comment dois-je déclarer un niveau de la classe de fonction à Swift?
Dans Swift 2.0, vous pouvez utiliser le mot-clé static, au lieu de la classe. Mais vous devriez utiliser le mot-clé static pour les structures de classe et de mot-clé pour les classes
//Edit viens de voir que j'ai bien mal compris votre question
OriginalL'auteur Sprotte