gpt4 book ai didi

julia - 为什么 Julia 用这种复杂的方式表达这个表达?

转载 作者:行者123 更新时间:2023-12-04 10:16:10 26 4
gpt4 key购买 nike

我遵循了 julia 的文档:

julia> :(a in (1,2,3))
:($(Expr(:in, :a, :((1,2,3)))))

现在, :(a in (1,2,3))==:($(Expr(:in, :a, :((1,2,3))))) ,为什么julia 用这种方式表达这个表达? $ 是什么意思?究竟是什么意思?在我看来 $只计算全局范围内的下一个表达式。我发现文档对此不清楚。

最佳答案

原因:(a in (1,2,3))尴尬地显示为 :($(Expr(...)))是因为show Expr 类型对象的函数(show_unquoted 中的 show.jl)不理解 in中缀运算符和回退到通用打印格式。

本质上它与 :(1 + 1) 相同除了 show_unquoted承认 +作为中缀运算符并很好地格式化它。

无论如何,:(...)$(...)在某种意义上是逆运算符,所以 :($(..thing..))就像 ..thing.. ,在这种情况下是 Expr(:in,:a,:((1,2,3))) .

您可以在 :(1+1) 中看到这种怪异现象。例如。输出是 Expr 类型,如 typeof(:(1+1))==Expr确认。它实际上是 Expr(:+,1,1) , 但输入 Expr(:+,1,1)在 REPL 上会显示 :($(Expr(:+,1,1))) - Expr 类型对象的通用格式样式。

修复 show.jl处理 in可能是一个不错的改变。但是这个问题是无害的,并且与显示格式有关。

关于julia - 为什么 Julia 用这种复杂的方式表达这个表达?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33494019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com