Julia 朱莉娅的链表
有人能帮我理解接下来的事情吗Julia 朱莉娅的链表,julia,Julia,有人能帮我理解接下来的事情吗 1) 为什么我们在制作链表时需要为将来的结构创建一个新的抽象类? 2) 为什么会有争论呢? 3) 这个接线员是干什么的 你没有。实际上,您可以定义递归结构,就像您发布的一样。嗯,好吧name=Ptr{Uint8}不是正确的语法-而是您想要的name::Ptr{Uint8}。虽然,实际上,您可能只是想要name::String。现在你仍然会遇到麻烦: julia> struct BrokenList name::String
1) 为什么我们在制作链表时需要为将来的结构创建一个新的抽象类?
2) 为什么会有争论呢?
3) 这个接线员是干什么的
name=Ptr{Uint8}
不是正确的语法-而是您想要的name::Ptr{Uint8}
。虽然,实际上,您可能只是想要name::String
。现在你仍然会遇到麻烦:
julia> struct BrokenList
name::String
next::BrokenList
end
julia> BrokenList("first", BrokenList("last", #= uh, what goes here? =# ))
您需要类型为BrokenList
的东西才能存在……但为了创建一个,您需要一个!因此,一个简单的“out”是允许next
成为列表的另一个节点或最后一个元素的某个占位符nothing
(类型为Void
)是一个简单的选项:
julia> struct BetterList
name::String
next::Union{BetterList, Void}
end
julia> BetterList("first", BetterList("last", nothing))
BetterList("first", BetterList("last", nothing))
T
不是一个参数;这是一个好主意。当然,我们的BetterList
可以轻松地保存Int
s而不是String
s……因此我们可以使用类型参数根据其保存的值动态参数化类型:
julia> struct LinkedList{T}
value::T
next::Union{LinkedList{T}, Void}
end
julia> LinkedList("first", LinkedList("last", nothing))
LinkedList{String}("first", LinkedList{String}("last", nothing))
julia> LinkedList(1, LinkedList(2, nothing))
LinkedList{Int64}(1, LinkedList{Int64}(2, nothing))
Union
s,而是使用抽象类型和子类型来描述具有节点或最终nil元素的可能性<代码>
name=Ptr{Uint8}
不是正确的语法-而是您想要的name::Ptr{Uint8}
。虽然,实际上,您可能只是想要name::String
。现在你仍然会遇到麻烦:
julia> struct BrokenList
name::String
next::BrokenList
end
julia> BrokenList("first", BrokenList("last", #= uh, what goes here? =# ))
您需要类型为BrokenList
的东西才能存在……但为了创建一个,您需要一个!因此,一个简单的“out”是允许next
成为列表的另一个节点或最后一个元素的某个占位符nothing
(类型为Void
)是一个简单的选项:
julia> struct BetterList
name::String
next::Union{BetterList, Void}
end
julia> BetterList("first", BetterList("last", nothing))
BetterList("first", BetterList("last", nothing))
T
不是一个参数;这是一个好主意。当然,我们的BetterList
可以轻松地保存Int
s而不是String
s……因此我们可以使用类型参数根据其保存的值动态参数化类型:
julia> struct LinkedList{T}
value::T
next::Union{LinkedList{T}, Void}
end
julia> LinkedList("first", LinkedList("last", nothing))
LinkedList{String}("first", LinkedList{String}("last", nothing))
julia> LinkedList(1, LinkedList(2, nothing))
LinkedList{Int64}(1, LinkedList{Int64}(2, nothing))
Union
s,而是使用抽象类型和子类型来描述具有节点或最终nil元素的可能性<代码>对于(3),手册描述<代码>对于(3),手册描述<代码>