English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Métodos Swift são funções associadas a tipos específicos
No Objective-No C, a classe é o único tipo que pode definir métodos. Mas no Swift, você não só pode escolher se deseja definir uma classe/Estrutura/Enumeração, ainda pode ser flexível no tipo que você criar (classe/Estrutura/definir métodos em enumeração).
Em Swift, métodos de exemplo pertencem a um exemplo específico de classe, estrutura ou tipo de enumeração.
Métodos de exemplo fornecem os seguintes métodos:
Pode acessar e modificar propriedades do exemplo
Fornecer funcionalidades relacionadas ao objetivo do exemplo
Métodos de exemplo devem ser escritos entre os chavetas de abertura e fechamento do tipo ao qual pertencem ({}).
Métodos de exemplo podem acessar implicitamente todos os outros métodos e propriedades do tipo ao qual pertencem.
Métodos de exemplo podem ser chamados apenas por um exemplo específico da classe a que pertencem.
Métodos de exemplo não podem ser chamados sem se separar de um exemplo existente.
func funcname(Parâmetros) -> tiporetorno { Sentença1 Sentença2 …… Sentença N retornar parâmetros }
import Cocoa class Counter { var count = 0 func increment() { contagem += 1 } func incrementarPor(quantidade: Int) { contagem += quantidade } func reset() { contagem = 0 } } // O valor contabilizado inicial é 0 let contagem = Counter() // O valor contabilizado agora é1 contagem.increment() // O valor contabilizado agora é6 contagem.incrementarPor(quantidade: 5) print(contagem.contagem) // O valor contabilizado agora é 0 contagem.reset() print(contagem.contagem)
O resultado de execução do programa acima é:
6 0
A classe Counter define três métodos de exemplo:
Counter Essa classe também declara um atributo mutável contagempara manter o rastreamento do valor atual do contador.
Os parâmetros de função no Swift podem ter tanto um nome local (usado dentro do corpo da função) quanto um nome externo (usado ao chamar a função)
Os métodos no Swift e no Objective-Os métodos no C são extremamente semelhantes. Como no Objective-Da mesma forma que no C, o nome do método no Swift geralmente usa um préposicional para apontar para o primeiro parâmetro, como: com, para, por etc.
O Swift padrão fornece apenas um nome de parâmetro local para o primeiro parâmetro do método; padrão, também fornece nomes de parâmetro globais para os segundos e os parâmetros subsequentes.
No exemplo a seguir, 'não1' é declarado como nome de parâmetro local no Swift. 'não2' é usado para declarações globais e acessadas por programas externos.
import Cocoa class divisão { var contagem: Int = 0 func incrementarPor(não1: Int, não2: Int) { contagem = não1 / não2 print(contagem) } } let contagem = divisão() contagem.incrementarPor(não1: 1800, sem2: 3) contagem.incrementarPor(não1: 1600, sem2: 5) contagem.incrementarPor(não1: 11000, sem2: 3)
O resultado de execução do programa acima é:
600 320 3666
Nós forçamos a adição de um nome externo ao primeiro parâmetro para usar esse nome local como nome externo (Swift 2.0 antes é usar o sinal #).
Ao contrário, também podemos usar o sublinhado (_ _) para definir o segundo e os parâmetros subsequentes sem fornecer um nome externo.import Cocoa class multiplicação { var contagem: Int = 0 func incrementarPor(primeiro não1: Int, não2: Int) { contagem = não1 * não2 print(contagem) } } let contagem = multiplicação() counter.incrementBy(first: 800, sem2: 3) counter.incrementBy(first: 100, sem2: 5) counter.incrementBy(first: 15000, sem2: 3)
O resultado de execução do programa acima é:
2400 500 45000
Cada exemplo do tipo tem um atributo implícito chamado self, que é completamente equivalente ao exemplo em si.
Você pode usar o atributo implícito self em um método de exemplo de um exemplo para se referir ao exemplo atual.
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("Dentro de Self: \(res)") } func tot(c: Int) -> Int { return res - c } func result() { print("O resultado é: \(tot(c: 20)) print("O resultado é: \(tot(c: 50)) } } let pri = cálculos(a: 600, b: 300) let sum = cálculos(a: 1200, b: 300) pri.result() sum.result()
O resultado de execução do programa acima é:
Dentro de Self: 900 Dentro de Self: 1500 O resultado é: 880 O resultado é: 850 O resultado é: 1480 O resultado é: 1450
Estruturas e enums no Swift são tipos de valor. Geralmente, os atributos de tipos de valor não podem ser modificados em seus métodos de exemplo.
Mas, se você realmente precisar modificar os atributos de uma estrutura ou enumeração em um método específico, você pode optar por mutável (mutating) esse método, então o método pode mudar seus atributos internamente; e qualquer mudança feita será mantida no exemplo original no final do método.
O método também pode atribuir um novo exemplo ao atributo implícito self, que substituirá o exemplo original no final do método.
import Cocoa struct área { var largura = 1 var largura = 1 func área() -> Int { return largura * largura } mutável func scaleBy(res: Int) { largura *= res largura *= res print(largura) print(largura) } } var val = área(largura: 3, largura: 5) val.scaleBy(res: 3) val.scaleBy(res: 30) val.scaleBy(res: 300)
O resultado de execução do programa acima é:
9 15 270 450 81000 135000
Métodos mutáveis podem atribuir um novo exemplo ao atributo implícito self.
import Cocoa struct área { var largura = 1 var largura = 1 func área() -> Int { return largura * largura } mutável func scaleBy(res: Int) { self.largura *= res self.largura *= res print(largura) print(largura) } } var val = área(largura: 3, largura: 5) val.scaleBy(res: 13)
O resultado de execução do programa acima é:
39 65
Os métodos de exemplo são chamados por uma instância do tipo. Você também pode definir métodos que a própria instância do tipo pode chamar, esses métodos são chamados de métodos de tipo.
Os métodos de tipo declarados em estruturas e enumerações devem ter a palavra-chave static antes da palavra-chave func. As classes podem usar a palavra-chave class para permitir que subclasses sobrescrevam a implementação dos pais.
Os métodos de tipo são chamados usando a sintaxe de ponto (.) como os métodos de exemplo.
import Cocoa classe Math { função de classe class func abs(number: Int) -> Int { if number < 0 { return (-number) } else { return number } } } struct absno { função estática 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)
O resultado de execução do programa acima é:
35 5