考虑一下我有一个带有复杂树private
或package
模块的大型库包——我们称之为funnylib
. 最终用户不希望直接触摸内部模块(如funnylib.foo
等funnylib.bar
),所以我想提供外部接口 - 像这样:
有趣的lib.d:
public import funnylib.foo;
public import funnylib.bar;
public import funnylib.baz;
像最终用户一样import funnylib
被导入。问题是 D 不允许同时拥有funnylib.d
和funnylib/
。
D中是否有类似“默认包模块”的东西,就像__init__.py
在Python中一样?如果不是,那么进行上述设计的正确方法是什么?
更新1 : 我考虑过将内部模块移动到类似的包funnylib_private
中,这样funnylib
可以很好地导入,但这会降低保护成本(非常不希望),因为funnylib将不再访问package
受保护的符号,并且会导致文件布局不愉快。