gpt4 book ai didi

struct - 调用参数结构的构造函数时发生方法错误

转载 作者:行者123 更新时间:2023-12-02 11:47:59 24 4
gpt4 key购买 nike

我正在尝试在 Julia 中创建一个链接列表。我有:

mutable struct LLNode{T}
x::T
next::Union{LLNode{T},Void}
prev::Union{LLNode{T},Void}
end

mutable struct LinkedList{T}
count::Int
head::Union{LLNode{T},Void}
tail::Union{LLNode{T},Void}
end

现在,上面的代码可以正常编译了。我还可以运行:x = LLNode(0,nothing,nothing) 很好。但是当我运行 y = LinkedList(0,nothing,nothing) 时,我收到了 no method matches LinkedList(::Int64,::Void,::Void) 错误。给出了什么?

VERSION 返回 v"0.6.2"

最佳答案

当您编写 LLNode(0,nothing,nothing) 时,Julia 能够确定它需要根据以下类型构造一个 LLNode{Int}第一个论点。但在 LinkedList(0, Nothing, Nothing) 中,它实际上没有任何东西可以继续确定类型参数应该是什么,因此它不知道要构造什么。

相反,您需要明确选择您想要的 T:

julia> LinkedList{Int}(0, nothing, nothing)
LinkedList{Int64}(0, nothing, nothing)

或者它可以根据非空参数获取T:

julia> LinkedList(0, LLNode(0, nothing, nothing), nothing)
LinkedList{Int64}(0, LLNode{Int64}(0, nothing, nothing), nothing)

关于struct - 调用参数结构的构造函数时发生方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50728288/

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