Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Parametros de função Swift

Prezados,

Assim como o usuário renato, tive a mesma dúvida sobre a função:

func add(name: String, calories: Double) {
    print("adding \(name) \(calories)")
}
add("Eggplant", 50.5)

Que ao ser chamada, diz que é necessário chama-lo com o label do calories (por se segundo parâmetro.

Eu utilizei a dica enviada pelo Demys:

func add(name: String, _ calories: Double) {
    print("adding \(name) \(calories)")
}

add("Eggplant", 50.5)

Porém gostaria de entender a utilização do _ (underline) no código... Esta é uma prática comum? Uma boa prática?

No video não foi necessário utilizar este recurso, ela é uma característica do swift II ou alguma configuração em meu xCode?

Obrigado desde já!

3 respostas

Olá Klaus! Veja só, o underscore é utilizado para desabilitar o comportamento padrão de quando chamamos uma função no swift.

Vou explicar melhor. Vamos utilizar a função postada por você:

func add(name: String, calories: Double) {
    print("adding \(name) \(calories)")
}

No caso acima, ao chamarmos essa função, por padrão, o primeiro parâmetro não precisa ser especificado, no entanto do segundo em diante é necessário uma especificação.

Logo o correto de chamar a função da forma como está acima é:

add("Eggplant", calories: 50.5)

E não :

add("Eggplant", 50.5)

Caso você tente fazer dessa segunda forma, o XCode dirá que há um erro e dará a sugestão de adicionar a especificação.

Então, sabendo disso é que entra o Underscore ( _ ), quando colocado anteriormente a um parametro, indicamos que este parâmetro não precisa ser especificado na chamada, fugindo assim do padrão do Swift.

Então, ao declararmos a função da seguinte forma:

func add(name: String, _ calories: Double) {
    print("adding \(name) \(calories)")
}

Podemos realizar a sua chamada da seguinte forma:

add("Eggplant", 50.5)

Este é o funcionamento do Underscore em uma função.

Espero ter ajudado! Bons Estudos!

Romário, Obrigado pela resposta. Este comportamento eu pude compreender.

Você saberia me dizer se este é apenas uma estrutura nova do Swift ou uma configuração do IDE?

Obrigado!

solução!

Klaus, é uma nova forma implantada no Swift 2.0. Além dessa, tem algumas outras utilizando o underscore