Mathematica:是否可以为简单的包创建一个自动的 init.m 文件

发布于 2024-10-13 11:37:16 字数 545 浏览 3 评论 0 原文

我的大多数个人包只是一个 m 文件,例如 Foo.m,但它们通常最终为 Foo/Foo.m,以便我可以存储相关测试以及 Foo 目录中的注释。为了允许仅使用 < 加载包,我包含 Foo/init.m 如下:

With[{packagename="Foo"},
  Get@FileNameJoin@{ 
    DirectoryName@FindFile[packagename<>"`"],
    packagename<>".m"}]

只要我记得更新,这就可以正常工作packagename 当我将 init.m 复制到新包时,但我想知道是否有一种方法可以制作完全可重用的 init.m这个简单的例子?

为了完整起见,我不想将实现重命名为 implementation.m

Most of my personal packages are just a single m-file, say Foo.m, but they usually end up as Foo/Foo.m so that I can store related tests and notes in the Foo directory as well. To allow the packages to be loaded with just <<Foo`, I include Foo/init.m as follows:

With[{packagename="Foo"},
  Get@FileNameJoin@{ 
    DirectoryName@FindFile[packagename<>"`"],
    packagename<>".m"}]

This works fine as long as I remember to update packagename when I copy init.m to new packages, but I was wondering if there is a way of making a completely reusable init.m for this simple case?

Just for completeness, I don't want to rename the implementation implementation.m.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

岛徒 2024-10-20 11:37:16

我不太确定理解你的问题,但无论如何这是一个猜测......

你尝试过类似

packagename = StringDrop[DirectoryName[$Input], -1]  

第一行的东西吗?

编辑:供以后参考

经过Janus测试,正确的表达式是:

packagename=StringDrop[$Input,-2]

I'm not quite sure to understand your question but here is a guess anyway ...

Did you try something like

packagename = StringDrop[DirectoryName[$Input], -1]  

in your first line?

Edit: for future reference

After Janus test, it became that the correct expression is:

packagename=StringDrop[$Input,-2]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文