Métodos rápidos
Swift é uma função do método está relacionado com certos tipos
Em Objective-C, as classes são os métodos definidos único tipo. Mas Swift, você não só pode escolher se deseja definir uma classe / struct / enum, mas também flexível no tipo (classe / struct / enum) que você criar no método de definição.
Métodos da instância
Em linguagem Swift, um método de instância pertence a uma classe particular, uma estrutura ou de instâncias tipo enumerado.
método de instância fornece os seguintes métodos:
Você pode acessar e modificar propriedades de instância
Exemplo fornecendo funções relacionadas ao objeto
Exemplos de métodos para escrever em torno dele pertence entre os tipos de chaves ({}).
Exemplos de método implícito pode acessar todos os métodos e propriedades de outras instâncias do tipo a que pertence.
Exemplos de métodos só pode ser chamado de uma instância específica da classe a que pertence.
método de instância não pode ser separada na instância existente é chamado.
gramática
func funcname(Parameters) -> returntype { Statement1 Statement2 …… Statement N return parameters }
Exemplos
import Cocoa class Counter { var count = 0 func increment() { count++ } func incrementBy(amount: Int) { count += amount } func reset() { count = 0 } } // 初始计数值是0 let counter = Counter() // 计数值现在是1 counter.increment() // 计数值现在是6 counter.incrementBy(5) print(counter.count) // 计数值现在是0 counter.reset() print(counter.count)
A saída de execução de programa acima é:
6 0
classe Contador define três métodos de instância:
-
increment
de modo que o contador é incrementado por um; -
incrementBy(amount: Int)
fazem contador por um valor inteiro especificado é incrementado; -
reset
o contador é reposto a 0.
Counter
Esta classe também declara um atributo variável count
, usá-lo para controlar o valor atual do contador.
nome do parâmetro local e o nome do método, os parâmetros externos
parâmetros da função Swift pode ter um nome local (no corpo da função utilizada internamente) e um nome externo (usado ao chamar funções
métodos rápidos e método de Objective-C muito semelhante. Como em Objective-C, o mesmo que o nome da Swift no método geralmente uma preposição aponta para o primeiro método parâmetro, por exemplo: com, para, por, e assim por diante.
padrão Swift apenas para o método do primeiro parâmetro o nome de um nome de parâmetro local; o padrão ao mesmo tempo para o segundo e subsequente nome do parâmetro nome do parâmetro global.
Os exemplos a seguir 'no1' declarado localmente em nome parâmetro na rápida. 'No2 "para declarações globais e acessado através de um programa externo.
import Cocoa class division { var count: Int = 0 func incrementBy(no1: Int, no2: Int) { count = no1 / no2 print(count) } } let counter = division() counter.incrementBy(1800, no2: 3) counter.incrementBy(1600, no2: 5) counter.incrementBy(11000, no2: 3)
A saída de execução de programa acima é:
600 320 3666
Se para fornecer configurações de nome externos
Nós forçar o primeiro argumento para adicionar um nome externo para o nome do nome do local como o uso externo (Swift 2.0 antes de usar o sinal #).
Em vez disso, podemos usá-lo também sublinha (_) para definir o segundo e subseqüentes argumentos não fornecem um nome externo.import Cocoa class multiplication { var count: Int = 0 func incrementBy(first no1: Int, no2: Int) { count = no1 * no2 print(count) } } let counter = multiplication() counter.incrementBy(first: 800, no2: 3) counter.incrementBy(first: 100, no2: 5) counter.incrementBy(first: 15000, no2: 3)
A saída de execução de programa acima é:
2400 500 45000
auto propriedade
Cada instância do tipo tem uma propriedade chamada auto implícita, auto exatamente o mesmo que a própria ocorrência.
Você pode usar essa auto implícita uma propriedade em uma instância método de instância para fazer referência à instância atual.
import Cocoa 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("Self 内: \(res)") } func tot(c: Int) -> Int { return res - c } func result() { print("结果为: \(tot(20))") print("结果为: \(tot(50))") } } let pri = calculations(a: 600, b: 300) let sum = calculations(a: 1200, b: 300) pri.result() sum.result()
A saída de execução de programa acima é:
Self 内: 900 Self 内: 1500 结果为: 880 结果为: 850 结果为: 1480 结果为: 1450
Modificar o método de instância tipo de valor
estruturas de linguagem Swift e enumerações são tipos de valor. Em geral, o tipo de o valor da propriedade não podem ser modificados nos seus métodos de instância.
Mas se você realmente precisa mudar a estrutura ou propriedade enumerado de uma maneira específica, você pode escolher a variação (mutação) o método, o método pode alterar as propriedades do método interno; quaisquer alterações, e ele faz no final do método será deixada na estrutura original.
O método também pode dar-lhe a atribuição auto propriedade implícita uma nova instância desta nova instância para substituir a instância original com o método.
import Cocoa 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(3) val.scaleBy(30) val.scaleBy(300)
A saída de execução de programa acima é:
9 15 270 450 81000 135000
Na variável de processo atribuído a auto
Método variável pode indicar atributos de auto implicava uma nova instância.
import Cocoa 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(13)
A saída de execução de programa acima é:
39 65
métodos de tipo
método de instância é um método é chamado de uma instância do tipo, você também pode definir o tipo de método chama-se, este método é chamado de método de tipo.
estrutura de declaração e método de tipo enumerado antes método func palavra-chave com a palavra-chave estática. Classe pode usar a palavra-chave class para permitir subclasses substituir a implementação classe pai.
O mesmo tipo e instância métodos que utilizam o ponto (.) Sintaxe para invocar.
import Cocoa 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(-35) let num = absno.abs(-5) print(no) print(num)
A saída de execução de programa acima é:
35 5