[swift-users] default struct initializer internal even if class declared public
davelist at mac.com
davelist at mac.com
Wed Jan 18 09:33:13 CST 2017
I’m teaching an iOS with Swift this semester and one of my students pointed out that:
struct Person {
var firstName: String
var lastName: String
}
does create a default initializer that you can call as:
p = Person(firstName: “Dave”, lastName: “Reed”)
but if you write:
public struct Person {
var firstName: String
var lastName: String
}
The default initializer is still internal so if you want it to be public, you have to write it yourself (i.e.)
public struct Person {
var firstName: String
var lastName: String
public init(firstName: String, lastName: String) {
self.firstName = firstName
self.lastName = lastName
}
}
Is there a way around this (other than writing it)? We both agree it would be reasonable/nice that the default initializer have the same protection level as the struct itself.
Thanks,
Dave Reed
More information about the swift-users
mailing list