我的大多数个人软件包只是一个m文件,比如Foo.m
,但它们通常最终为Foo/Foo.m
,以便我可以在Foo
中存储相关的测试和备注目录也是如此。为了允许仅使用<<Foo`
加载包,我包括Foo/init.m
,如下所示:
With[{packagename="Foo"},
Get@FileNameJoin@{
DirectoryName@FindFile[packagename<>"`"],
packagename<>".m"}]
只要我记得在将packagename
复制到新软件包时更新init.m
,这项工作正常,但我想知道是否有办法让init.m
完全重复使用implementation.m
这个简单的案例?
为了完整起见,我不想重命名实现{{1}}。
答案 0 :(得分:3)
我不太清楚你的问题,但无论如何这是一个猜测......
你有没有试过像
这样的东西packagename = StringDrop[DirectoryName[$Input], -1]
在你的第一行?
编辑:供将来参考
在Janus测试之后,它变成了正确的表达式:
packagename=StringDrop[$Input,-2]