Latest web development tutorials

função Swift

função Swift é usado para realizar tarefas específicas blocos de código separados.

Swift usa uma sintaxe unificada para expressar um simples funções de estilo C a complexa abordagem de estilo de linguagem Objective-C.

  • declaração de função: dizer o nome da função compilador, tipo de retorno e os parâmetros.

  • definição de função: Fornecer as funções de entidade.

função Swift contém os tipos de parâmetro e tipo de retorno:


definição de função

funções Swift-definidos usando a palavra-chavefunc.

funções definidas, você pode especificar um ou mais parâmetros de entrada e um tipo de valor de retorno.

Cada função tem um nome de função para descrever sua função. O valor do parâmetro do nome da função e do tipo de chamada que funcionar. parâmetros da função de transferência de ordem deve ser a mesma lista de parâmetros.

Ordem dos argumentos passados na lista de parâmetros da função deve ser a mesma-> Depois de definir o tipo de retorno da função.

gramática

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

Exemplos

Abaixo nós definimos uma função chamada função w3big, os parâmetros do tipo de dados String, o valor de retorno de string:

import Cocoa

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

A saída de execução de programa acima é:

www.w3big.com

chamada de função

Podemos chamar a função através do valor nome da função e parâmetro correspondente ao tipo da lista de parâmetros função de transferência de parâmetro de ordem deve ser o mesmo.

Abaixo nós definimos uma função chamada função w3big, o site do parâmetro tipo de dados String, em seguida, chamamos o argumento da função passada deve ser de argumentos tipo string passados ​​após o corpo da função vai diretamente retorno tipo de dados retornado uma string.

import Cocoa

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

A saída de execução de programa acima é:

www.w3big.com

Argumentos da função

Função pode aceitar um ou mais parâmetros, também podemos usar uma tupla (tuple) passar um ou mais parâmetros para funções:

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))

A saída de execução de programa acima é:

40
45
120

Função sem parâmetros

Nós podemos criar uma função sem parâmetros.

sintaxe:

func funcname() -> datatype {
   return datatype
}

Exemplos

import Cocoa

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

A saída de execução de programa acima é:

本教程

Tupla retornar o valor que a função

Função tipo de valor de retorno pode ser uma string, integer, o tipo de ponto flutuante.

Tupla é semelhante à matriz, a diferença é, os elementos de tupla pode ser de qualquer tipo, utilizando parênteses.

Você pode ter vários tipos de valores como um valor composto retornado da tupla função (tupla).

O exemplo que se segue, a definição de uma chamada MinMax (_ :) função do papel é o de identificar os valores mínimo e máximo em uma 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 (_ :) função retorna uma tupla de dois valores Int, você pode acessá-los pelo nome esses valores são marcados como mínimo e máximo, para que a consulta devolve o valor da função no.

A saída de execução de programa acima é:

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

Se você está inseguro tupla retornada não deve nil, então você pode retornar um tipo de tupla opcional.

Você pode colocar um ponto de interrogação após o encerramento tipo parêntese tuple para definir um tuplo opcional, como (Int, Int)? Ou (String, Int, Bool)?

Nota O tipo de tupla opcional, como (Int, Int)? Tuple contém um tipo opcional, como (Int?, Int?) É diferente. O tipo tupla opcional, toda a tupla é opcional, e não apenas cada tupla valor do elemento.

Frente minMax(_:) função retorna um dois conter Int tuplas de valor. Mas a função não executa qualquer verificação de segurança na matriz de entrada, se a array parâmetro é uma matriz vazia, como definido anteriormente minMax(_:) tentando acessar array[0] desencadeia um erro de execução.

Para lidar com estas questões "matriz vazia" com segurança, o minMax(_:) função reescrito para usar a tupla tipo de retorno opcional e retorna quando a matriz está vazia 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)")
}

A saída de execução de programa acima é:

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

Nenhum valor de retorno da função

Aqui está w3big (_ :) Outra versão da função, a função recebe o site oficial dos parâmetros tutorial URL, tipo de retorno não é especificado, e saída direta valor de cadeia em vez de devolvê-lo:

import Cocoa

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

A saída de execução de programa acima é:

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

Função Nome do parâmetro

argumento de função tem um nome de parâmetro externo e um nome de parâmetro local.

Nome do parâmetro local

nome do parâmetro local na função da aplicação interna de usar.

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

O número do exemplo acima de nome de parâmetro local só pode ser usado no corpo da função.

import Cocoa

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

A saída de execução de programa acima é:

1
2
3

nome do parâmetro externo

Você pode especificar um nome de parâmetro externo na frente dos nomes de parâmetros locais, separados por um espaço, os nomes dos parâmetros externos para os parâmetros passados ​​para a função quando a função é chamada.

Você pode definir o seguinte duas funções nome do parâmetro e chamá-lo:

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)

A saída de execução de programa acima é:

125

Note que se você fornecer um nome de parâmetro externo, em seguida, a função é chamada, você deve usar um nome de parâmetro externo.


parâmetro variável

Os parâmetros variáveis ​​pode aceitar zero ou mais valores. Quando a função é chamada, você pode usar um parâmetro variável para especificar os argumentos da função, o seu número é incerto.

Os parâmetros variáveis ​​pelo nome no tipo de variável, insira (...) maneira 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")

A saída de execução de programa acima é:

4
3
5
4.5
3.1
5.6
Google
Baidu
w3big

Constantes, variáveis ​​e parâmetros de I / O

Geralmente os parâmetros padrão são parâmetros constantes definidas na função, que é o único parâmetro que você pode usar uma consulta, você não pode alterar o valor.

Se você quiser declarar um parâmetro variável, você pode adicionar var na frente para que você possa alterar o valor deste parâmetro.

Por exemplo:

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

Neste caso, os valores de ID pode mudar de função.

Normalmente, os parâmetros padrão são passados ​​pela chamada valor, e não passado por referência. Então parâmetros de entrada dentro da mudança de função não afeta os parâmetros originais. Acabou de passar uma cópia deste parâmetro.

Os parâmetros variáveis, como descrito acima, pode ser alterado somente no corpo da função. Se você quer uma função pode modificar o valor de um parâmetro, e você quer essas alterações no final da chamada de função persistir, então você deve colocar este parâmetro é definido como os parâmetros de entrada e saída (in-out Parâmetros).

Ao definir uma entrada e parâmetros de saída, definição de parâmetros antes de adicionar inout palavra-chave. Os parâmetros de entrada e de saída ter passado um valor da função, o valor da função é modificada e depois espalhar função, substituindo o valor original.

Exemplos

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)")

A saída de execução de programa acima é:

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

A modificação é usar a palavra-chave 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)")

A saída de execução de programa acima é:

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

tipo de função e uso

Cada função tem uma função específica do tipo de espécies, o tipo do parâmetro de função e retornar tipos.

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

Exemplos são os seguintes:

import Cocoa

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

A saída de execução de programa acima é:

2
6

Int acima função define dois tipos de parâmetros, valores de retorno para o tipo int.

Em seguida olhamos para a seguinte função, a função define os parâmetros do tipo String, o valor de retorno do tipo String.

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

Você também pode definir os parâmetros da função e qualquer tipo, como segue:

import Cocoa

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

A saída de execução de programa acima é:

本教程
www.w3big.com

Tipo Use a função

Em Swift, a utilização de tipos de funcionar como com outros tipos. Por exemplo, você pode definir uma constante ou variável da função tipo e a função apropriada atribuída a ele:

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

resolução:

"Definindo chamado addition de variáveis, parâmetros e tipos de valores de retorno são Int , e deixar que esta nova variável aponta sum função."

sum e addition têm o mesmo tipo, a operação acima é legal.

Agora, você pode usar além de chamar a função atribuída de:

import Cocoa

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

A saída de execução de programa acima é:

输出结果: 129

Tipo de função como um tipo de parâmetro, tipo de função que o tipo de retorno

Nós podemos funcionar como um parâmetro para outro 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)

A saída de execução de programa acima é:

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

funções aninhadas

função aninhada refere-se à definição de uma nova função dentro da função, função externa pode chamar funções dentro de uma definição de função.

Exemplos são os seguintes:

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())

A saída de execução de programa acima é:

-30