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
应该可以。
我偶然遇到了这个错误,我用一些转移的方式修复了,但我仍然很好奇它是如何为 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
应该可以。