Swift - Méthodes
En langage Swift 4, les fonctions associées à des types particuliers sont appelées méthodes. En Objective C, les classes sont utilisées pour définir des méthodes, tandis que le langage Swift 4 offre à l'utilisateur la flexibilité d'avoir des méthodes pour les classes, les structures et les énumérations.
Méthodes d'instance
En langage Swift 4, les instances Classes, Structures et Enumeration sont accessibles via les méthodes d'instance.
Les méthodes d'instance fournissent des fonctionnalités
- Pour accéder et modifier les propriétés des instances
- fonctionnalité liée au besoin de l'instance
La méthode d'instance peut être écrite à l'intérieur des {} accolades. Il a un accès implicite aux méthodes et propriétés de l'instance de type. Lorsqu'une instance spécifique du type est appelée, elle aura accès à cette instance particulière.
Syntaxe
func funcname(Parameters) -> returntype {
Statement1
Statement2
---
Statement N
return parameters
}
Exemple
class calculations {
let a: Int
let b: Int
let res: Int
init(a: Int, b: Int) {
self.a = a
self.b = b
res = a + b
}
func tot(c: Int) -> Int {
return res - c
}
func result() {
print("Result is: \(tot(c: 20))")
print("Result is: \(tot(c: 50))")
}
}
let pri = calculations(a: 600, b: 300)
pri.result()
Lorsque nous exécutons le programme ci-dessus en utilisant aire de jeux, nous obtenons le résultat suivant -
Result is: 880
Result is: 850
Les calculs de classe définissent deux méthodes d'instance -
- init () est défini pour ajouter deux nombres a et b et les stocker dans le résultat 'res'
- tot () est utilisé pour soustraire le 'res' de passer la valeur 'c'
Enfin, pour imprimer les méthodes de calculs avec des valeurs pour a et b est appelée. Les méthodes d'instance sont accessibles avec '.' syntaxe de point
Noms des paramètres locaux et externes
Les fonctions Swift 4 décrivent les déclarations locales et globales pour leurs variables. De même, les conventions de dénomination des méthodes Swift 4 ressemblent également à celles de l'Objectif C. Mais les caractéristiques des déclarations de noms de paramètres locaux et globaux sont différentes pour les fonctions et les méthodes. Le premier paramètre dans Swift 4 est référencé par les noms de préposition comme «avec», «pour» et «par» pour des conventions de dénomination faciles d'accès.
Swift 4 offre la flexibilité des méthodes en déclarant le premier nom de paramètre en tant que noms de paramètres locaux et les noms de paramètres restants comme des noms de paramètres globaux. Ici, «no1» est déclaré par les méthodes Swift 4 comme noms de paramètres locaux. «no2» est utilisé pour les déclarations globales et accessible via le programme.
class division {
var count: Int = 0
func incrementBy(no1: Int, no2: Int) {
count = no1 / no2
print(count)
}
}
let counter = division()
counter.incrementBy(no1: 1800, no2: 3)
counter.incrementBy(no1: 1600, no2: 5)
counter.incrementBy(no1: 11000, no2: 3)
Lorsque nous exécutons le programme ci-dessus en utilisant aire de jeux, nous obtenons le résultat suivant -
600
320
3666
Nom du paramètre externe avec symbole # et _
Même si les méthodes Swift 4 fournissent les premiers noms de paramètres pour les déclarations locales, l'utilisateur a la possibilité de modifier les noms de paramètres des déclarations locales aux déclarations globales. Cela peut être fait en préfixant le symbole «#» avec le premier nom de paramètre. Ce faisant, le premier paramètre est accessible globalement à travers les modules.
Lorsque l'utilisateur a besoin d'accéder aux noms de paramètres suivants avec un nom externe, le nom des méthodes est remplacé à l'aide du symbole «_».
class multiplication {
var count: Int = 0
func incrementBy(no1: Int, no2: Int) {
count = no1 * no2
print(count)
}
}
let counter = multiplication()
counter.incrementBy(no1: 800, no2: 3)
counter.incrementBy(no1: 100, no2: 5)
counter.incrementBy(no1: 15000, no2: 3)
Lorsque nous exécutons le programme ci-dessus en utilisant aire de jeux, nous obtenons le résultat suivant -
2400
500
45000
Propriété de soi dans les méthodes
Les méthodes ont une propriété implicite appelée «self» pour toutes ses instances de type définies. La propriété 'Self' est utilisée pour référencer les instances actuelles pour ses méthodes définies.
class calculations {
let a: Int
let b: Int
let res: Int
init(a: Int, b: Int) {
self.a = a
self.b = b
res = a + b
print("Inside Self Block: \(res)")
}
func tot(c: Int) -> Int {
return res - c
}
func result() {
print("Result is: \(tot(c: 20))")
print("Result is: \(tot(c: 50))")
}
}
let pri = calculations(a: 600, b: 300)
let sum = calculations(a: 1200, b: 300)
pri.result()
sum.result()
Lorsque nous exécutons le programme ci-dessus en utilisant aire de jeux, nous obtenons le résultat suivant -
Inside Self Block: 900
Inside Self Block: 1500
Result is: 880
Result is: 850
Result is: 1480
Result is: 1450
Modification des types de valeur à partir des méthodes d'instance
Dans Swift 4, les structures et les énumérations appartiennent à des types de valeur qui ne peuvent pas être modifiés par ses méthodes d'instance. Cependant, le langage Swift 4 offre la flexibilité de modifier les types de valeur en «mutant» le comportement. Mutate apportera toutes les modifications aux méthodes d'instance et reviendra au formulaire d'origine après l'exécution de la méthode. De plus, par la propriété 'self', une nouvelle instance est créée pour sa fonction implicite et remplacera la méthode existante après son exécution
struct area {
var length = 1
var breadth = 1
func area() -> Int {
return length * breadth
}
mutating func scaleBy(res: Int) {
length *= res
breadth *= res
print(length)
print(breadth)
}
}
var val = area(length: 3, breadth: 5)
val.scaleBy(res: 3)
val.scaleBy(res: 30)
val.scaleBy(res: 300)
Lorsque nous exécutons le programme ci-dessus en utilisant aire de jeux, nous obtenons le résultat suivant -
9
15
270
450
81000
135000
Propriété propre pour la méthode de mutation
Les méthodes mutantes combinées à la propriété «self» attribuent une nouvelle instance à la méthode définie.
struct area {
var length = 1
var breadth = 1
func area() -> Int {
return length * breadth
}
mutating func scaleBy(res: Int) {
self.length *= res
self.breadth *= res
print(length)
print(breadth)
}
}
var val = area(length: 3, breadth: 5)
val.scaleBy(res: 13)
Lorsque nous exécutons le programme ci-dessus en utilisant Playground, nous obtenons le résultat suivant. -
39
65
Méthodes de type
Lorsqu'une instance particulière d'une méthode est appelée, elle est appelée en tant que méthode Instance; et lorsque la méthode appelle un type particulier de méthode, elle est appelée «Méthodes de type». Les méthodes de type pour les 'classes' sont définies par le mot clé 'func' et les méthodes de type structures et énumérations sont définies avec le mot clé 'static' avant le mot clé 'func'.
Les méthodes de type sont appelées et accessibles par '.' syntaxe où au lieu d'appeler une instance particulière, la méthode entière est appelée.
class Math {
class func abs(number: Int) -> Int {
if number < 0 {
return (-number)
} else {
return number
}
}
}
struct absno {
static func abs(number: Int) -> Int {
if number < 0 {
return (-number)
} else {
return number
}
}
}
let no = Math.abs(number: -35)
let num = absno.abs(number: -5)
print(no)
print(num)
Lorsque nous exécutons le programme ci-dessus en utilisant Playground, nous obtenons le résultat suivant. -
35
5