gpt4 book ai didi

julia - 使用模块函数而不是基本函数 Julia

转载 作者:行者123 更新时间:2023-12-01 07:42:50 24 4
gpt4 key购买 nike

假设我有一个 Julia 模块 MyModule,它为一维卷积定义了一个名为 conv() 的函数。我希望能够在导入或使用文件的文件中通过 MyModule.conv() 调用此函数。示例:

import MyModule.conv
MyModule.conv()

但是,我无法使这种语法起作用; Julia 仍然调用 Base.conv() 而不是 MyModule.conv()。我已经尝试了所有不同风格的 usingimport 但无法使这种语法起作用。

这个功能在 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

在定义自己的函数之前,必须确保不要在 ModA 中对 conv 进行任何引用,否则它已经查找了 Base。 conv 并将名称 conv 与之相关联。

关于julia - 使用模块函数而不是基本函数 Julia,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35817307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com