I ran into this issue not half an hour ago; I would also prefer the default 
initializer to default to the entity’s access level, or at least have some 
simple way of opting in.

> On Jan 18, 2017, at 3:33 PM, Dave Reed via swift-users 
> <swift-users@swift.org> wrote:
> 
> 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
> 
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users

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

Reply via email to