Hi,

When I am defining a struct I find myself often using a style as shown in the 
following example:

struct Foo {

        var greeting: String
        var x: Int
        var y: Int
        var z: Int

        init(greeting: String, x: Int = 1, y: Int = 2, z: Int = 3) {
                self.greeting = greeting
                self.x = x
                self.y = y
                self.z = z
        }
}

This enables one to write code when one doesn’t need to change defaults:

let f = Foo(greeting: “Hello”)

and when one wishes to change one of the defaults:

let f = Foo(greeting: “Hello”, z: 4)

It would be better if one could write the struct in what I understand is the 
preferred style:

struct Foo {
        var greeting: String
        var x = 1
        var y = 2
        var z = 3
}

and have the compiler generate the initializer:

init(name: String, x: Int = 1, y: Int = 2, z: Int = 3) {
        self.name = name
        self.x = x
        self.y = y
        self.z = z
}

rather than one where all the parameters that have a default value need to be 
specified in the initializer if one wishes to change just one of them.

Regards,
Guy Miller




_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to