[swift-evolution] [Pitch] Custom Namespaces

Niels Andriesse andriesseniels at gmail.com
Wed Mar 30 00:52:35 CDT 2016


At the moment, it's not possible to define custom namespaces. They can be
emulated using static members on an enum:

enum Foo {
  static var bar: Bar
  static func baz() { }
}

This is not ideal, because:

   - The case shown above is semantically speaking obviously not an enum and
   shouldn't be presented as such.
   - The members are required to be static unnecessarily.
   - Not all top-level declarations can be nested like this (e.g.
   protocols).
   - If we allow namespaces to be reused in different files within the same
   module, this could potentially be used as a custom scope for access control
   (e.g. using the proposed private(...) syntax, so in this case
   private(Foo)).

Are there any plans to allow custom namespaces (for example as shown below)?

namespace Foo {
  var bar: Bar
  func baz() { }
}

Alternatively, a similar situation could be achieved by introducing
submodules.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160330/89d7e9b0/attachment.html>


More information about the swift-evolution mailing list