Swift não é como linguagens como JavaScript, onde você pode chamar uma função sem passar os parâmetros e ela ainda será chamada. Portanto, para chamar uma função em Swift, você precisa atribuir um valor a seus parâmetros.
Os valores padrão dos parâmetros permitem que você atribua um valor sem especificá-lo ao chamar a função. É por isso que test()
funciona quando você especifica um valor padrão na declaração do teste.
Se você não incluir esse valor padrão, você precisa fornecer o valor na chamada: test(nil)
.
Além disso, e não diretamente relacionado a esta questão, mas provavelmente vale a pena notar, você está usando a maneira "C ++" de lidar com ponteiros possivelmente nulos, para lidar com possíveis opcionais nulos em Swift. O código a seguir é mais seguro (especialmente em software multithreading) e permite que você evite o desembrulhamento forçado do opcional:
func test(firstThing: Int? = nil) {
if let firstThing = firstThing {
print(firstThing)
}
print("done")
}
test()
func test(firstThing: Int = 4)
: um não-Optional
parâmetro com um valor padrão. OOptional
tipo (que é o que?
em um nome de tipo se expande) é um tipo de valor; "parâmetro opcional" é um nome infeliz para um parâmetro que pode ou não estar presente em uma chamada de função, independentemente de seu tipo.