如何在APL中导入命名空间并使用?
如何在APL中导入命名空间并使用?
咱们一步一步来解决你的问题,其实APL里导入命名空间有几种常用方式,适配不同的场景,我给你详细说说:
首先得确保你的F.apln文件在APL能找到的位置——APL默认会搜索当前工作目录,你可以用⎕PW命令查看当前工作路径,如果F.apln在其他目录,记得用⎕SE.UCMD'ADDPATH "你的文件所在目录路径"'把它添加到搜索路径里,这样APL才能找到它。
方法一:全局导入后在命名空间中引用
这种方法适合你希望F命名空间在整个会话中都能使用的场景:
- 先在全局会话或者脚本的开头执行导入命令:
// 如果F.apln在搜索路径里,直接用名称导入 IMPORT F // 或者用绝对/相对路径指定文件(比如同一目录下) IMPORT './F.apln' - 之后你的
G命名空间就可以直接引用F里的函数了,就像你原本写的那样:
这样IMPORT F :Namespace G foo2←F.foo∘÷ :EndnamespaceG里的foo2就能正常调用F.foo的功能啦。
方法二:在目标命名空间内部导入
如果你不想让F污染全局环境,只想在G内部访问它,可以直接在G命名空间里用:Import指令:
:Namespace G // 用相对路径导入,并给命名空间起别名F(也可以省略as F,直接用原名称) :Import './F.apln' as F foo2←F.foo∘÷ :Endnamespace
这样只有在G的作用域里才能访问F,全局环境里看不到它,更干净。
小提醒
- 如果
F.apln里的命名空间名称和文件名一致(都是F),直接用名称导入就行;如果不一致,最好用文件路径导入更稳妥。 - 要是你修改了
F.apln的内容,记得重新执行导入命令或者重启会话,不然APL还是会用之前加载的旧版本哦。
备注:内容来源于stack exchange,提问作者Zet Khrush
相关产品推荐
相关产品推荐

