gpt4 book ai didi

julia - (Julia 1.x) 获取#undef 变量的类型

转载 作者:行者123 更新时间:2023-12-04 18:00:34 25 4
gpt4 key购买 nike

我希望获取 struct 中的字段类型以便相应地设置字段值。一些数据类型在实例化时初始化值(例如 Int64Float64 ),而其他类型初始化为 #undef (例如 StringArray )。虽然 typeof(getfield())适用于前一种类型,它抛出 UndefRefError对于后者:

julia> mutable struct MyStruct
a::Int64
b::String
MyStruct() = new()
end

julia> foo = MyStruct()
MyStruct(0, #undef)

julia> typeof(getfield(foo, :a))
Int64

julia> typeof(getfield(foo, :b))
ERROR: UndefRefError: access to undefined reference
Stacktrace:
[1] top-level scope at none:0

有没有办法获取未初始化的变量的类型,或者 #undef表明明显缺乏类型?或者,是否可以使用内部构造函数初始化默认值?例如
julia> mutable struct MyStruct
a::Int64
b::String
MyStruct() = new(b = "")
end

最佳答案

您正在寻找 fieldtype功能:

julia> fieldtype(MyStruct, :a)
Int64

julia> fieldtype(MyStruct, :b)
String

对于您的另一个问题,您当然可以初始化字段。
mutable struct MyStruct
a::Int64
b::String
MyStruct() = new(0,"") # will initialize a as 0 and b as ""
end

关于julia - (Julia 1.x) 获取#undef 变量的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57392683/

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