假设我有一个Julia模块MyModule
,它定义了一个名为conv()
的函数用于1D卷积。我希望能够通过MyModule.conv()
在导入或使用该文件的文件中调用此函数。例如:
import MyModule.conv
MyModule.conv()
但是,我无法使用此语法;朱莉娅仍然拨打Base.conv()
而不是MyModule.conv()
。我尝试了using
和import
的所有不同样式,但无法使用此语法。
Julia有这个功能吗?我觉得我已经看到这个在其他Julia软件包中实现,但找不到一个有效的例子。
编辑
目前的设置如下;在定义之外的ModA中没有对conv()的引用。
module ModA
function conv(a, b)
println("ModA.conv")
end
end
然后,在另一个文件中,
import ModA
conv(x, y) #still calls Base.conv()
解决
这完全是我的错。由于LOAD_PATH调用与我调用的文件不同的版本(在LOAD_PATH中找到第一个,而不是我正在编辑的那个版本),因此导入无法正常工作。完全是我的错......
答案 0 :(得分:3)
你的意思是这样吗?
module ModA
conv() = println("Calling ModA.conv")
end
module ModB # Import just conv from ModA
using ..ModA.conv # Could have used import ..ModA.conv instead
conv() # if we want to be able to extend ModA.conv
end
module ModC # Import ModA and use qualified access to access ModA.conv
import ..ModA
ModA.conv()
end
在定义自己的函数之前,您必须确保不要在conv
内对ModA
进行任何引用,或者它已经查找Base.conv
并将名称与{conv
相关联1}}。