Let's say I have a class:
class Fruit {
var fruitName: String
init(getFruit name: String) {
fruitName = name
}
}
Is there any difference between using the constructor, and using .init?
var apple = Fruit(getFruit: "apple")
var orange = Fruit.init(getFruit: "orange")
Im not seeing any difference in playground.
I apologize if the question is badly worded or has been asked before.
From the Initializer Expression section of the language guide:
If you specify a type by name, you can access the type’s initializer without using an initializer expression. In all other cases, you must use an initializer expression.
let s1 = SomeType.init(data: 3) // Valid
let s2 = SomeType(data: 1) // Also validlet s3 = type(of: someValue).init(data: 7) // Valid
let s4 = type(of: someValue)(data: 5) // Error
Initializing using the explicit .init
on the type directly is no different than without it; they are equivalent from Swift's perspective, so most folks prefer the brevity of omitting .init
.
To my knowledge, there is absolutely no difference.
It is generally convention in Swift to call the constructor without the .init
This is the 'swiftier' shorthand.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With