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

Reply via email to