本文介绍了Julia v0.6宏内部函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有人可以解决我遇到的这个宏错误,它仅在版本0.6中才开始发生:
Can someone resolve this macro error I'm having, it only started happening in version 0.6:
mutable struct Foo
x::Int
end
macro test(myfoo)
quoteblock =
quote
myfoo.x += 1
end
return quoteblock
end
function func(myfoo)
@test myfoo
println(myfoo.x)
end
foo = Foo(3)
func(foo)
从理论上讲,这应该只在编译时用myfoo.x += 1
替换函数func
中的行@test myfoo
,这应该可以,但是我得到了错误:
In theory this should just replace the line @test myfoo
in the function func
with myfoo.x += 1
at compile time, which should work, but instead I get the error:
UndefVarError: myfoo not defined
推荐答案
列出了相应的更改说明此处:
The corresponding change-notes are listed here:
所以答案是逃避myfoo
:
macro test(myfoo)
quote
$(esc(myfoo)).x += 1
end
end
这篇关于Julia v0.6宏内部函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!