Julia 朱莉娅:元编程;错误:不支持或放错了表达式$";

Julia 朱莉娅:元编程;错误:不支持或放错了表达式$";,julia,Julia,为什么我会收到下面的错误消息?(我对Julia的元编程相当陌生。)谢谢 这是一个bug,问题记录在这里: 从那以后它就被修好了。正如在对这个问题的评论中所指出的,如果你被困在一个未修复的Julia版本上,有一些黑客的解决方法,但希望你能升级。看起来像是一个在0.4上修复的bug,我得到了Julia>macroexpand(:(b.$d.c)):(b.e.c)输出versioninfo():Julia version 0.4.0-dev+4630提交f299fed(2015-05-04 14:2

为什么我会收到下面的错误消息?(我对Julia的元编程相当陌生。)谢谢


这是一个bug,问题记录在这里:


从那以后它就被修好了。正如在对这个问题的评论中所指出的,如果你被困在一个未修复的Julia版本上,有一些黑客的解决方法,但希望你能升级。

看起来像是一个在0.4上修复的bug,我得到了
Julia>macroexpand(:(b.$d.c)):(b.e.c)
输出
versioninfo()
Julia version 0.4.0-dev+4630提交f299fed(2015-05-04 14:29 UTC)平台信息:系统:Linux(x86_64-redhat-Linux)CPU:英特尔(R)至强(R)CPU E5-2630 v2@2.60GHz WORD_大小:64 BLAS:libopenblas(使用64位动态搜索号亲和力Sandybridge)LAPACK:libopenblas LIBM:libopenliblibm LLVM-3.3
关于
(b.$d.c)
而不是
宏扩展(…)
?@ptb感谢您的评论。
ex=:(b.$d.c)
抛出与上述错误相同的错误。必须与赋值操作有关。这里发生了一些非常奇怪的事情。
macroexpand
不需要,您也不应该得到错误消息。似乎
ex=:((b.$d.c)
会做你想做的事。
julia> d = :e
:e

julia> macroexpand(:(b.$d))
:(b.e)

julia> macroexpand(:($d.c))
:(e.c)

julia> macroexpand(:(b.$d.c))
ERROR: unsupported or misplaced expression $

julia> macroexpand(:(b.$(d).c))
ERROR: unsupported or misplaced expression $