English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Los métodos Swift están asociados con tipos específicos
En Objective-En C, la clase es el único tipo que puede definir métodos. Pero en Swift, no solo puedes elegir si deseas definir una clase/Estructuras/Enumeraciones, además pueden ser flexibles en los tipos que crea (clases/Estructuras/definir métodos en enumerados)
En el lenguaje Swift, los métodos de ejemplo pertenecen a los métodos de un ejemplo específico de una clase, estructura o tipo enumerado.
Los métodos de ejemplo proporcionan los siguientes métodos:
Puede acceder y modificar las propiedades del ejemplo
Proporcionar funcionalidades relacionadas con el propósito del ejemplo
Los métodos de ejemplo deben escribirse entre los corchetes grandes ({}) del tipo al que pertenecen.
Los métodos de ejemplo pueden acceder implícitamente a todos los otros métodos y propiedades del tipo al que pertenecen.
Los métodos de ejemplo solo pueden ser llamados por un ejemplo específico de la clase a la que pertenecen.
Los métodos de ejemplo no pueden ser llamados independientemente de los ejemplos existentes.
func nombrefunción(Parámetros) -> tiporetorno { Declaración1 Declaración2 …… Declaración N devolver parámetros }
import Cocoa class Counter { var count = 0 func increment() { count +}} 1 } func incrementarPor(cantidad: Int) { count += cantidad } func reset() { count = 0 } } // El valor de cuenta inicial es 0 let contador = Counter() // El valor de cuenta ahora es1 contador.increment() // El valor de cuenta ahora es6 contador.incrementarPor(cantidad: 5) imprimir(contador.count) // El valor de cuenta ahora es 0 contador.reset() imprimir(contador.count)
El resultado de la ejecución del programa anterior es:
6 0
La clase Counter define tres métodos de ejemplo:
Counter Esta clase también declara una propiedad mutable countpara mantener el seguimiento del valor actual del contador.
Los parámetros de una función en Swift pueden tener tanto un nombre local (usado dentro del cuerpo de la función) como un nombre externo (usado al llamar a la función
Los métodos en Swift y Objective-Los métodos en C son extremadamente similares. Al igual que en Objective-Al igual que en C, los nombres de métodos en Swift suelen usar un preposicional para apuntar al primer parámetro del método, como: con, por, por etcétera.
Por defecto, Swift solo proporciona un nombre de parámetro local al primer parámetro de un método; por defecto, proporciona nombres de parámetros globales a los segundos y siguientes parámetros.
En el siguiente ejemplo, 'no1'' se declara en swift como nombre de parámetro local. ''no2'' se usa para declaraciones globales y se accede a través de programas externos.
import Cocoa class división { var count: Int = 0 func incrementarPor(no1: Int, no2: Int) { count = no1 / no2 imprimir(count) } } let contador = división() contador.incrementarPor(no1: 1800, no2: 3) contador.incrementarPor(no1: 1600, no2: 5) contador.incrementarPor(no1: 11000, no2: 3)
El resultado de la ejecución del programa anterior es:
600 320 3666
Nos forzamos a agregar un nombre externo al primer parámetro para usar este nombre local como nombre externo (Swift 2.0 antes se usa el símbolo #).
Por el contrario, también podemos usar guiones bajos (_ _) para establecer que los segundos y siguientes parámetros no tengan un nombre externo.import Cocoa class multiplicación { var count: Int = 0 func incrementarPor(primer no1: Int, no2: Int) { count = no1 * no2 imprimir(count) } } let contador = multiplicación() counter.incrementBy(first: 800, no2: 3) counter.incrementBy(first: 100, no2: 5) counter.incrementBy(first: 15000, no2: 3)
El resultado de la ejecución del programa anterior es:
2400 500 45000
Cada ejemplo del tipo tiene una propiedad implícita llamada self, que es completamente equivalente a la instancia en sí misma.
Puedes usar la propiedad implícita self en un método de instancia de una instancia para referirte a la instancia actual.
import Cocoa class cálculos { let a: Int let b: Int let res: Int init(a: Int, b: Int) { self.a = a self.b = b res = a + b print("Self dentro de: \(res)") } func tot(c: Int) -> Int { devuelve res - c } func result() { print("El resultado es: \(tot(c: 20)) print("El resultado es: \(tot(c: 50)) } } let pri = cálculos(a: 600, b: 300) let sum = cálculos(a: 1200, b: 300) pri.result() sum.result()
El resultado de la ejecución del programa anterior es:
Self dentro de: 900 Self dentro de: 1500 El resultado es: 880 El resultado es: 850 El resultado es: 1480 El resultado es: 1450
Los tipos de estructura y enumeración en Swift son tipos de valor. Generalmente, las propiedades de los tipos de valor no se pueden modificar en sus métodos de instancia.
Pero, si realmente necesitas modificar las propiedades de una estructura o enumeración en un método específico, puedes elegir el método mutando y, en ese caso, el método puede cambiar sus propiedades desde dentro; y cualquier cambio que realice se conservará en la estructura original al finalizar el método.
El método también puede asignar a la propiedad implícita self una nueva instancia completamente nueva, que reemplazará a la instancia original una vez que finalice el método.
import Cocoa struct área { var longitud = 1 var anchura = 1 func área() -> Int { devuelve longitud * anchura } mutando func scaleBy(res: Int) { longitud *= res anchura *= res print(longitud) print(anchura) } } var val = área(longitud: 3, anchura: 5) val.scaleBy(res: 3) val.scaleBy(res: 30) val.scaleBy(res: 300)
El resultado de la ejecución del programa anterior es:
9 15 270 450 81000 135000
Los métodos mutables pueden asignar a la propiedad implícita self una nueva instancia completamente nueva.
import Cocoa struct área { var longitud = 1 var anchura = 1 func área() -> Int { devuelve longitud * anchura } mutando func scaleBy(res: Int) { self.longitud *= res self.anchura *= res print(longitud) print(anchura) } } var val = área(longitud: 3, anchura: 5) val.scaleBy(res: 13)
El resultado de la ejecución del programa anterior es:
39 65
Los métodos de ejemplo son métodos llamados por una instancia del tipo, también puedes definir métodos llamados por el tipo mismo, estos métodos se llaman métodos de tipo.
Se declaran métodos de tipo para estructuras y enumeraciones antes de la palabra clave func con la palabra clave estática. Las clases pueden usar la palabra clave class para permitir que las subclases sobrescriban la implementación del padre.
Los métodos de tipo se llaman con la sintaxis de punto (.).
import Cocoa class Math { func abs(number: Int) de clase -> Int { if number < 0 { return (-number) } else { return number } } } struct absno { func abs(number: Int) estático -> 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)
El resultado de la ejecución del programa anterior es:
35 5