Latest web development tutorials

función Swift

Swift función se utiliza para realizar tareas específicas separar bloques de código.

Swift utiliza una sintaxis unificada para expresar un simple funciones de tipo C y Objective-C enfoque al estilo de lenguaje complejo.

  • declaración de la función: decirle al nombre de la función del compilador, el tipo y los parámetros de retorno.

  • definición de función: Proporcionar las funciones de la entidad.

Swift función contiene los tipos de parámetros y el tipo de retorno:


definición de la función

funciones-Swift se define utilizando la palabra clavefunc.

funciones definidas, puede especificar uno o más parámetros de entrada y un tipo de valor de retorno.

Cada función tiene un nombre de función para describir su función. El valor del parámetro del nombre de la función y el tipo de llamada que funcione. parámetros de la función de transferencia de orden debe ser la misma lista de parámetros.

Orden de los argumentos que se pasan en la lista de parámetros de función debe ser la misma-> Después de definir el tipo de retorno de la función.

gramática

func funcname(形参) -> returntype
{
   Statement1
   Statement2
   ……
   Statement N
   return parameters
}

Ejemplos

A continuación se define una función llamada función w3big, los parámetros de tipo de datos String, el valor de retorno de la cadena:

import Cocoa

func w3big(site: String) -> String {
    return site
}
print(w3big("www.w3big.com"))

La salida por encima de la ejecución del programa es:

www.w3big.com

llamada a la función

Podemos llamar a la función a través del valor del nombre de la función y el parámetro correspondiente al tipo de la lista de parámetros de función de transferencia parámetro de orden debe ser el mismo.

A continuación se define una función llamada función w3big, el lugar del parámetro de tipo de datos de cadena, entonces llamamos al argumento de la función debe ser aprobada argumentos de tipo cadena pasaron después de que directamente le enviará el tipo de datos devuelto el cuerpo de la función una cadena.

import Cocoa

func w3big(site: String) -> String {
    return site
}
print(w3big("www.w3big.com"))

La salida por encima de la ejecución del programa es:

www.w3big.com

Argumentos de función

La función puede aceptar uno o más parámetros, también podemos usar una tupla (tupla) pasar uno o más parámetros de funciones:

import Cocoa

func mult(no1: Int, no2: Int) -> Int {
   return no1*no2
}
print(mult(2, no2:20))
print(mult(3, no2:15))
print(mult(4, no2:30))

La salida por encima de la ejecución del programa es:

40
45
120

Función sin parámetros

Podemos crear una función sin parámetros.

sintaxis:

func funcname() -> datatype {
   return datatype
}

Ejemplos

import Cocoa

func sitename() -> String {
    return "本教程"
}
print(sitename())

La salida por encima de la ejecución del programa es:

本教程

Tupla devolver el valor que la función

Función tipo de valor de retorno puede ser una cadena, un entero, el tipo de punto flotante.

Tupla es similar a la matriz, la diferencia es, los elementos de tupla pueden ser de cualquier tipo, el uso de paréntesis.

Puede tener varios tipos de valores como un valor compuesto de regresar de la tupla de funciones (tupla).

En el siguiente ejemplo, la definición de un llamado MinMax (_ :) función de la función es identificar los valores mínimo y máximo de una matriz Int.

import Cocoa

func minMax(array: [Int]) -> (min: Int, max: Int) {
    var currentMin = array[0]
    var currentMax = array[0]
    for value in array[1..<array.count] {
        if value < currentMin {
            currentMin = value
        } else if value > currentMax {
            currentMax = value
        }
    }
    return (currentMin, currentMax)
}

let bounds = minMax([8, -6, 2, 109, 3, 71])
print("最小值为 \(bounds.min) ,最大值为 \(bounds.max)")

MinMax (_ :) función devuelve una tupla de dos valores int, puede acceder a ellos por su nombre esos valores se marcan como mínimo y máximo, por lo que la consulta devuelve el valor de la función en.

La salida por encima de la ejecución del programa es:

最小值为 -6 ,最大值为 109

Si son tupla devuelta seguro no debe nula, entonces se puede devolver un tipo tupla opcional.

Puede colocar un signo de interrogación después del cierre de tipo tupla paréntesis para definir una tupla opcional, como (Int, Int)? O (String, int, Bool)?

Nota tipo tupla opcional tal como (Int, Int)? Tupla contiene un tipo opcional, tal como (Int?, Int?) Es diferente. El tipo tupla opcional, toda la tupla es opcional, y no sólo cada valor de elemento de la tupla.

Frente minMax(_:) función devuelve un dos contienen Int tuplas de valor. Pero la función no realiza ninguna comprobación de seguridad en la matriz de entrada, si el array de parámetros es una matriz vacía, como se definió anteriormente minMax(_:) intentar acceder array[0] desencadena un error de ejecución.

Para hacer frente a estas cuestiones "conjunto vacío" con seguridad, el minMax(_:) función reescrito para utilizar el tipo de retorno tupla opcional y regresa cuando la matriz está vacía nil :

import Cocoa

func minMax(array: [Int]) -> (min: Int, max: Int)? {
    if array.isEmpty { return nil }
    var currentMin = array[0]
    var currentMax = array[0]
    for value in array[1..<array.count] {
        if value < currentMin {
            currentMin = value
        } else if value > currentMax {
            currentMax = value
        }
    }
    return (currentMin, currentMax)
}
if let bounds = minMax([8, -6, 2, 109, 3, 71]) {
    print("最小值为 \(bounds.min),组大值为 \(bounds.max)")
}

La salida por encima de la ejecución del programa es:

最小值为 -6,组大值为 109

Se desconoce el valor de retorno de la función

Aquí se w3big (_ :) Otra versión de la función, la función recibe el sitio web oficial de los parámetros de URL tutorial, tipo de retorno no se especifica, y el valor de cadena de salida directa en lugar de devolverlo:

import Cocoa

func w3big(site: String) {
    print("本教程官网:\(site)")
}
w3big("http://www.w3big.com")

La salida por encima de la ejecución del programa es:

本教程官网:http://www.w3big.com

Función Nombre del parámetro

argumento de la función tiene un nombre de parámetro externo y un nombre de parámetro local.

Nombre del parámetro local

nombre de parámetro local en la función de la aplicación interna de usar.

func sample(number: Int) {
   println(number)
}

El número del ejemplo de nombre de parámetro local sólo se puede utilizar en el cuerpo de la función.

import Cocoa

func sample(number: Int) {
   print(number)
}
sample(1)
sample(2)
sample(3)

La salida por encima de la ejecución del programa es:

1
2
3

Nombre del parámetro externo

Puede especificar un nombre de parámetro externa delante de los nombres de los parámetros locales, separadas por un espacio, los nombres de los parámetros externos para los parámetros pasados ​​a la función cuando la función se llama.

Se pueden definir los siguientes dos funciones nombre del parámetro y lo llaman:

import Cocoa

func pow(firstArg a: Int, secondArg b: Int) -> Int {
   var res = a
   for _ in 1..<b {
      res = res * a
   }
   print(res)
   return res
}
pow(firstArg:5, secondArg:3)

La salida por encima de la ejecución del programa es:

125

Tenga en cuenta que si se proporciona un nombre de parámetro externo, entonces la función se llama, debe utilizar un nombre de parámetro externo.


parámetro variable

Los parámetros variables pueden aceptar cero o más valores. Cuando se invoca la función, se puede utilizar un parámetro variable para especificar los argumentos de la función, su número es incierto.

Los parámetros variables por su nombre en el tipo de variable, inserte (...) forma de definir.

import Cocoa

func vari<N>(members: N...){
    for i in members {
        print(i)
    }
}
vari(4,3,5)
vari(4.5, 3.1, 5.6)
vari("Google", "Baidu", "w3big")

La salida por encima de la ejecución del programa es:

4
3
5
4.5
3.1
5.6
Google
Baidu
w3big

Constantes, variables y parámetros de E / S

En general, los parámetros por defecto son parámetros constantes definidas en la función, que es el único parámetro que puede utilizar una consulta, no se puede cambiar su valor.

Si desea declarar un parámetro variable, puede agregar var delante de modo que usted puede cambiar el valor de este parámetro.

Por ejemplo:

func  getName(var id:String).........

En este caso los valores de ID puede cambiar en función.

Por lo general, los parámetros por defecto se pasan por el llamado valor, no pasa por referencia. Por lo tanto los parámetros de entrada en el cambio de función no afecta a los parámetros originales. Acaba de pasar una copia de este parámetro.

Los parámetros variables, como se describe anteriormente, sólo se puede cambiar en el cuerpo de la función. Si desea una función puede modificar el valor de un parámetro, y desea que estos cambios al final de la llamada a la función persiste, entonces debería poner este parámetro se define como los parámetros de entrada y de salida (In-Out Parámetros).

Cuando se define una entrada y parámetros de salida, de definición de parámetros inout antes de añadir palabras clave. Los parámetros de entrada y salida de pasar un valor de la función, el valor de la función es modificado y luego se extendió función, sustituyendo el valor original.

Ejemplos

import Cocoa

func swapTwoInts(var a:Int,var b:Int){
    
    let t = a
    a = b
    b = t
}

var x = 0,y = 100
print("x = \(x) ;y = \(y)")

swapTwoInts(x, b:y)
print("x = \(x) ;y = \(y)")

La salida por encima de la ejecución del programa es:

x = 0 ;y = 100
x = 0 ;y = 100

La modificación consiste en utilizar la palabra clave inout:

import Cocoa

func swapTwoInts(inout a:Int,inout b:Int){
    
    let t = a
    a = b
    b = t
}

var x = 0,y = 100
print("x = \(x) ;y = \(y)")

swapTwoInts(&x, b:&y)
print("x = \(x) ;y = \(y)")

La salida por encima de la ejecución del programa es:

x = 0 ;y = 100
x = 100 ;y = 0

Tipo de función y uso

Cada función tiene una función específica del tipo de especie, el tipo del parámetro de función y tipos de devolución.

func inputs(no1: Int, no2: Int) -> Int {
   return no1/no2
}

Ejemplos son los siguientes:

import Cocoa

func inputs(no1: Int, no2: Int) -> Int {
    return no1/no2
}
print(inputs(20,no2:10))
print(inputs(36,no2:6))

La salida por encima de la ejecución del programa es:

2
6

Int anterior función define dos tipos de parámetros, valores de retorno de tipo int.

A continuación nos fijamos en la siguiente función, la función define los parámetros de tipo String, el valor de retorno de tipo String.

Func inputstr(name: String) -> String {
   return name
}

También puede definir los parámetros de la función y de cualquier tipo, de la siguiente manera:

import Cocoa

func inputstr() {
   print("本教程")
   print("www.w3big.com")
}
inputstr()

La salida por encima de la ejecución del programa es:

本教程
www.w3big.com

Tipo de empleo Función

En Swift, el uso de los tipos de función Al igual que con otros tipos. Por ejemplo, se puede definir una constante o variable de tipo función y la función apropiada asignada a la misma:

var addition: (Int, Int) -> Int = sum

resolución:

"Definición de llamada addition de las variables, parámetros y tipos de valor de retorno es Int , y dejar que esta nueva variable apunta sum de funciones."

sum y addition tienen el mismo tipo, la operación anterior es legal.

Ahora, puede utilizar además de llamar a la función asignada de:

import Cocoa

func sum(a: Int, b: Int) -> Int {
   return a + b
}
var addition: (Int, Int) -> Int = sum
print("输出结果: \(addition(40, 89))")

La salida por encima de la ejecución del programa es:

输出结果: 129

Tipo de función como un tipo de parámetro, el tipo de función que el tipo de retorno

Podemos funcionar como un parámetro a otro parámetro:

import Cocoa

func sum(a: Int, b: Int) -> Int {
    return a + b
}
var addition: (Int, Int) -> Int = sum
print("输出结果: \(addition(40, 89))")

func another(addition: (Int, Int) -> Int, a: Int, b: Int) {
    print("输出结果: \(addition(a, b))")
}
another(sum, a: 10, b: 20)

La salida por encima de la ejecución del programa es:

输出结果: 129
输出结果: 30

funciones anidadas

función anidada se refiere a la definición de una nueva función dentro de la función, la función externa puede llamar a funciones dentro de una definición de función.

Ejemplos son los siguientes:

import Cocoa

func calcDecrement(forDecrement total: Int) -> () -> Int {
   var overallDecrement = 0
   func decrementer() -> Int {
      overallDecrement -= total
      return overallDecrement
   }
   return decrementer
}
let decrem = calcDecrement(forDecrement: 30)
print(decrem())

La salida por encima de la ejecución del programa es:

-30