Julia宏可能会以不同的方式处理变量和文字吗?

时间:2015-06-01 20:40:35

标签: julia

嗨同胞Julia用户,

为什么会这样

using HDF5, JLD
  s = "It would take me 48 hours to recompute this."
  filename_no_ext = "eric_demo_file"
  @save filename_no_ext
  readdir()
  @load "eric_demo_file"

与此不同的评估?

using HDF5, JLD
  s = "It would take me 48 hours to recompute this."
  filename_no_ext = "eric_demo_file"
  @save filename_no_ext
  readdir()
  @load filename_no_ext

1 个答案:

答案 0 :(得分:3)

与功能相比,宏是非常不同的野兽。其中一个不同之处在于他们没有评估他们的论点:http://docs.julialang.org/en/latest/manual/metaprogramming/#macro-invocation

  

重要的是要强调宏接收它们的参数作为表达式,文字或符号。

要比较2个输出(左侧作为练习)的含义:

julia> macroexpand(:(@load filename_no_ext))

julia> macroexpand(:(@load "eric_demo_file"))