可以说我有一个Julia模块MyModule
,它为一维卷积定义了一个称为conv()
的函数。我希望能够通过导入或使用该文件的文件中的MyModule.conv()
调用此函数。例:
import MyModule.conv
MyModule.conv()
但是,我无法使这种语法正常工作。 Julia仍然调用
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中找到第一个文件,而不是我正在编辑的文件)。完全是我的错
最佳答案
你的意思是这样吗?
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
关联。关于julia - 使用模块函数代替基本函数Julia,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35817307/