noob question about modules

Hi,

I am beginning with Swift 4 (coming from the Java world) but I do not have yet a Swift development environment to experiment with. Therefore my question(s) might sound a bit silly. Unfortunately, I haven't been able to answer them by reading the online Language Guide.

1) What makes a submodule? I can see online examples about how to import them, but not how to create one or any other further details about them. Are they like Java packages inside a jar? Do their hierarchical name (prefix1.prefix2. ... .submodulename) reflect a path tree on the filesystem (/prefix1/prefix2. ... /submodulename), just as it happens with Java packages?
2) Can two different submodules within a single module export two different classes under a single class name? Like module.submodule1.MyType and module.submodule2.myType.

Thanks in advance.

David

No, submodules in Swift bear little relation to sub packages in Java. It's really just a way of partitioning the namespace within a single module. Nor is there any relation between the path and the name of the module either.

Alex

···

On 12 Sep 2017, at 22:41, blaster_in_black via swift-users <swift-users@swift.org> wrote:

Hi,

I am beginning with Swift 4 (coming from the Java world) but I do not have yet a Swift development environment to experiment with. Therefore my question(s) might sound a bit silly. Unfortunately, I haven't been able to answer them by reading the online Language Guide.

1) What makes a submodule? I can see online examples about how to import them, but not how to create one or any other further details about them. Are they like Java packages inside a jar? Do their hierarchical name (prefix1.prefix2. ... .submodulename) reflect a path tree on the filesystem (/prefix1/prefix2. ... /submodulename), just as it happens with Java packages?
2) Can two different submodules within a single module export two different classes under a single class name? Like module.submodule1.MyType and module.submodule2.myType.

Thanks in advance.

David

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

Thanks much, Alex.

But how do you physically partition the namespace within a module, if not by sub-folders?

I am not sure whether the following example is, by definition, of a submodule that one could import by writing "import Cacao.StyleKit":

Https://github.com/PureSwift/Cacao/tree/master/Sources/Cacao/StyleKit

···

Sent from ProtonMail mobile

-------- Original Message --------
On 13.09.2017, 10:23, Alex Blewitt wrote:

No, submodules in Swift bear little relation to sub packages in Java. It's really just a way of partitioning the namespace within a single module. Nor is there any relation between the path and the name of the module either.

Alex

On 12 Sep 2017, at 22:41, blaster_in_black via swift-users < swift-users@swift.org> wrote:

Hi,

I am beginning with Swift 4 (coming from the Java world) but I do not have yet a Swift development environment to experiment with. Therefore my question(s) might sound a bit silly. Unfortunately, I haven't been able to answer them by reading the online Language Guide.

1) What makes a submodule? I can see online examples about how to import them, but not how to create one or any other further details about them. Are they like Java packages inside a jar? Do their hierarchical name ( prefix1.prefix2. ... .submodulename) reflect a path tree on the filesystem (/ prefix1/prefix2. ... /submodulename), just as it happens with Java packages?
2) Can two different submodules within a single module export two different classes under a single class name? Like module.submodule1.MyType and module.submodule2.myType.

Thanks in advance.

David

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

For the record, I will paste here the answer I have received on StackOverflow. It adds some useful tips to the info provided by Alex. In short,

Swift modules are somehow equivalent to Java packages, and Swift frameworks to Java .jars (if we don't get too formal);
Swift (sub)modules can be visible to clients and the latter can import them much as Java sub-packages are imported;
Swift (sub)modules are not implicitely defined by the source code folders layout, but by meta-files and tooling that are external to the source code (contrarily to Java).

https://stackoverflow.com/questions/46228517/swift-submodules-what-are-they-exactly

Cheers,

David

···

Sent with [ProtonMail](https://protonmail.com) Secure Email.

-------- Original Message --------
Subject: Re: [swift-users] noob question about modules
Local Time: 14 September 2017 12:26 PM
UTC Time: 14 September 2017 10:26
From: swift-users@swift.org
To: alblue@apple.com
swift-users@swift.org

Thanks much, Alex.

But how do you physically partition the namespace within a module, if not by sub-folders?

I am not sure whether the following example is, by definition, of a submodule that one could import by writing "import Cacao.StyleKit":

Https://github.com/PureSwift/Cacao/tree/master/Sources/Cacao/StyleKit

Sent from ProtonMail mobile

-------- Original Message --------
On 13.09.2017, 10:23, Alex Blewitt < alblue@apple.com> wrote:

No, submodules in Swift bear little relation to sub packages in Java. It's really just a way of partitioning the namespace within a single module. Nor is there any relation between the path and the name of the module either.

Alex

On 12 Sep 2017, at 22:41, blaster_in_black via swift-users < swift-users@swift.org> wrote:

Hi,

I am beginning with Swift 4 (coming from the Java world) but I do not have yet a Swift development environment to experiment with. Therefore my question(s) might sound a bit silly. Unfortunately, I haven't been able to answer them by reading the online Language Guide.

1) What makes a submodule? I can see online examples about how to import them, but not how to create one or any other further details about them. Are they like Java packages inside a jar? Do their hierarchical name ( prefix1.prefix2. ... .submodulename) reflect a path tree on the filesystem (/ prefix1/prefix2. ... /submodulename), just as it happens with Java packages?
2) Can two different submodules within a single module export two different classes under a single class name? Like module.submodule1.MyType and module.submodule2.myType.

Thanks in advance.

David

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