Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there difference between using a constructor and using .init?

Tags:

swift

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. enter image description here

I apologize if the question is badly worded or has been asked before.

like image 567
leedex Avatar asked Oct 16 '25 11:10

leedex


2 Answers

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 valid

let 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.

like image 162
Itai Ferber Avatar answered Oct 19 '25 08:10

Itai Ferber


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.

like image 26
Rudy B Avatar answered Oct 19 '25 08:10

Rudy B



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!