小编thi*_*osh的帖子

Julia 中的结构重复

我有一个名为 的包sandwich,它有:

flavours.jl定义 struct 的文件HamCheeseSandwich

该文件factory.jl是一个首先运行的模块include("flavours.jl"),并且有一个方法make_sandwich创建一个,但它返回的HamCheeseSandwich不是生成一个HamCheeseSandwichsandwich.factory.HamCheeseSandwich

最后一个文件是printer.jl,这里制作的三明治factory.jl失败了MethodError: no method matching print_sandwich(::sandwich.factory.HamCheeseSandwich)

# printer.jl
function print_sandwich(sandwich::HamCheeseSandwich)
    println("Enjoy your sandwich")
    println(sandwich)
end
Run Code Online (Sandbox Code Playgroud)

当我检查类型时

Julia> sandwich.factory.HamCheeseSandwich == HamCheeseSandwich
false
Run Code Online (Sandbox Code Playgroud)

这表明问题是我使用include创建了两个版本的HamCheeseSandwich.

重现

可以在这个仓库中看到一个工作示例:https ://github.com/this-josh/Julia-structs-question

可以使用以下命令重现此行为

using sandwich
s = factory.make_sandwich(true,false)
print_sandwich(s)
Run Code Online (Sandbox Code Playgroud)

我的问题是我应该如何在包中使用 include 来防止重复HamCheeseSandwich并确保我仍然可以输入提示,如printer.jl

struct julia

4
推荐指数
1
解决办法
102
查看次数

标签 统计

julia ×1

struct ×1