Let\'s say I have a class:
class Fruit {
var fruitName: String
init(getFruit name: String) {
fruitName = name
}
}
Is ther
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.