我不完全理解Julia 中的quote ... end
和:( ... )
表达式之间有什么区别。
看起来唯一的区别好像是前者(quote
)引入了额外的注释行。
- 差异就这么简单吗,或者还有更多其他的差异?
- 这些注释行的目的是什么?它们有什么作用?或者换句话说,为什么你会使用其中一个而不是另一个?
以下是一些例子
julia> :(2+2)
:(2 + 2)
julia> e1=:(2+2)
:(2 + 2)
julia> e1
:(2 + 2)
julia> eval(e1)
4
julia> quote
2+2
end
quote
#= REPL[2]:2 =#
2 + 2
end
julia> e2=quote
2+2
end
quote
#= REPL[5]:2 =#
2 + 2
end
julia> e2
quote
#= REPL[5]:2 =#
2 + 2
end
julia> eval(e2)
4
我找到了这本维基百科,但它只说
引用表达式的每一行都添加了有用的行号
(指与……quote
相比:
)。
关键字表达式的文档页面也没有说太多。
与其他引用方式 :( ... ) 不同,此形式将 QuoteNode 元素引入表达式树,直接操作树时必须考虑到这一点。
这意味着什么?
它们非常相似。
:(...)
是为单行引用设计的,而quote
增加了 linenumber 节点,这意味着如果代码有错误,如果代码跨越多行,则会更好地报告错误行。