在Julia中初始化nothing变量

在Julia中初始化nothing变量,julia,Julia,如何为Julia中可能不存在的变量编写初始化 id = nothing title = "Something" hash = "31114" id = id || title || hash # Not working 将返回不等于nothing的第一个值。它支持数量可变的参数: julia> something(0, nothing) 0 julia> something(nothing, "foo") "foo" julia> something(nothing,

如何为Julia中可能不存在的变量编写初始化

id = nothing
title = "Something"
hash  = "31114"

id = id || title || hash # Not working
将返回不等于
nothing
的第一个值。它支持数量可变的参数:

julia> something(0, nothing)
0

julia> something(nothing, "foo")
"foo"

julia> something(nothing, nothing, 1)
1
您可以使用它设置变量的默认值:

x = something(x, DEFAULT_VALUE)
您的示例可以使用:

julia> id = nothing

julia> title = "Something"
"Something"

julia> hash  = "31114"
"31114"

julia> id = something(id, title, hash)
"Something"

它以什么方式“不起作用”?你的确切预期产出是什么?不清楚你在问什么。如果您想知道
id
的定义是否有意义,应该使用
isdefined
。如果要区分nothing和“nothing”值,应使用
Some(nothing)
。如果您试图执行布尔测试,您应该选择易于转换为布尔值的类型。关于公认的答案,请注意
something(nothing,0)
something(nothing,0)
之间的区别。如果“nothing”是数据集中的合法值,那么您需要了解它。这个问题听起来有点像XY解决方案在寻找问题。无论你在做什么,听起来你最好用某种结构(例如Dict或数据帧)包装你的三元组,并检查丢失的值等@tasopapastylianou如果你试图执行它,它会抛出一个错误。在JS中,初始化变量是一种常见的构造,我在Julia中寻找类似的构造
something
解决了问题,谢谢。请注意,在这种情况下,
missing
可能更适合。
missing
不一定适合此模式。相反,如果您不希望未初始化的值以静默方式传播,那么
nothing
是正确的选择。