Swift Fonctions De Classe
Donc je me pose des questions sur des fonctions de classe et de "normal instance fonctions". Je voudrais savoir quel est le but d'une fonction de classe. Est-il juste si on peut utiliser certaines fonctions sans affectation à la classe d'une variable de première ou a-t-elle à d'autres fins?
class Dog {
func bark()->String{
return "Woef Woef!"
}
class func bark_class()->String{
return "Woef Woef!"
}
}
var dog = Dog()
dog.bark() //Woef Woef!
Dog.bark() //Throws and error
Dog.bark_class() // Woef Woef! > Apparently is doens't need an initiated object
Vous devez vous connecter pour publier un commentaire.
Méthodes statiques peuvent être invoquées sans fournir une instance d'une classe - ils ont juste besoin de le type de classe:
La raison pour laquelle ils existent c'est parce que, dans certains cas, une instance n'est pas vraiment nécessaire. Généralement une méthode d'instance qui peut être déplacé à l'extérieur de la classe comme une fonction globale est un bon candidat pour être une méthode statique. Une autre façon de déterminer si une méthode peut être faite statique est par l'examen de son corps si elle n'a jamais fait référence à une propriété de classe ou la méthode, alors il peut être statique.
Une autre différence évidente est qu'une méthode statique ne peut pas accéder directement aux propriétés d'instance et des méthodes, afin de faire une instance de la classe doit être transmis en tant que paramètre ou instancié dans le corps.
Méthodes d'Instance sont en fait des méthodes statiques ainsi, à la différence qu'ils sont fonctions curryfiées prenant une instance de classe comme premier paramètre:
mais qui peut être de façon plus concise, appelée à l'aide de la syntaxe traditionnelle:
J'ai explicitement parlé de classes, mais ce que dit est aussi valable pour les structures - avec la seule différence que l'
static
mot-clé est utilisé à la place declass
lors de la définition des méthodes statiques.Appeler votre méthode de l'écorce, vous devez créer une instance de la classe.
Puis vous dire
instance.bark()
Vous n'avez pas besoin de faire un exemple, lorsque vous voulez appeler une classe func.
Comme vous l'avez dit que vous ne pouvez l'appeler avec:
Une Classe fun, également appelé un
Type Method
Apple docs: