Julia 仅当尚未在中定义时才指定
是否只有在变量未定义(或falsy)时才有简单的Julia语法用于分配给变量?我的意思是Ruby的Julia 仅当尚未在中定义时才指定,julia,Julia,是否只有在变量未定义(或falsy)时才有简单的Julia语法用于分配给变量?我的意思是Ruby的x | |=新的_值。我尝试了x | | x=NEW_值,但它抛出了一个错误。如果没有简单的语法,我可以使用什么函数来检查变量是否已定义?您可以使用宏:(@isdefined x)| |(x=NEW_VALUE)我准备了一个宏来处理这一小麻烦 macro ifund(exp) local e = :($exp) isdefined(Main, e.args[1]) ? :($(e.a
x | |=新的_值
。我尝试了x | | x=NEW_值
,但它抛出了一个错误。如果没有简单的语法,我可以使用什么函数来检查变量是否已定义?您可以使用宏:(@isdefined x)| |(x=NEW_VALUE)
我准备了一个宏来处理这一小麻烦
macro ifund(exp)
local e = :($exp)
isdefined(Main, e.args[1]) ? :($(e.args[1])) : :($(esc(exp)))
end
然后在答复中:
julia> z
ERROR: UndefVarError: z not defined
julia> @ifund z=1
1
julia> z
1
julia> z=10
10
julia> @ifund z=2
10
julia> z
10
插值的一个示例:
julia> w
ERROR: UndefVarError: w not defined
julia> w = "$(@ifund w="start:") end"
"start: end"
julia> w
"start: end"
但是,请记住范围(y
在for循环的范围内):
让我知道它是否有效。我很好奇,因为这是我第一次练习宏
编辑:Julia v1.0改编完成 1.0的更新:将
isdefined(e.args[1])
替换为isdefined(Main,e.args[1])
@fredcallaway,Done.Stefan,既然@isdefined x
是一件事,您可能需要更新它
julia> y
ERROR: UndefVarError: y not defined
julia> for i=1:10 y = "$(@ifund y="") $i" end
julia> y
ERROR: UndefVarError: y not defined