Julia 中的三元运算符和范围

Ternary operator and range in Julia

我偶然遇到了这个错误,我用一些转移的方式修复了,但我仍然很好奇它是如何为 Julia 解决的。

假设MWE:

julia> a = 1 ; b = 5 ; some_logical_value = true

julia> @assert a > 0 ? b in 1:10 : some_logical_value
ERROR: syntax: space required before colon in "?" expression
Stacktrace:
 [1] top-level scope at none:1

这会产生错误,因为毫不奇怪,来自三元运算符的 : 和来自 1:10 的 : 对 Julia 具有误导性。我们应该怎么做?

您只需添加括起范围表达式的括号,因此

@assert a > 0 ? b in (1:10) : some_logical_value

@assert a > 0 ? (b in 1:10) : some_logical_value

应该可以。