或 julia 中的逻辑运算符

or logical operator in julia

我想了解 Julia 如何使用 or 运算符。这是我正在练习的脚本:

integer = 52
if length(string(integer)) == 1 || 2
    println("length is 1 or 2")
end

但它给了我这个错误:

TypeError: non-boolean (Int64) used in boolean context

Stacktrace:
 [1] top-level scope
   @ In[108]:2
 [2] eval
   @ .\boot.jl:373 [inlined]
 [3] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String)
   @ Base .\loading.jl:1196

而且我确定问题出在我写 1 || 2 的地方!我应该如何在 Julia 中指定它?我应该如何解释 TypeError: non-boolean (Int64) used in boolean context 错误?

你应该写:

length(string(integer)) in [1, 2]

1 <= length(string(integer)) <= 2

或更详细地说:

length(string(integer)) == 1 || length(string(integer)) == 2

当你写:

length(string(integer)) == 1 || 2

它被解释为“length(string(integer)) == 1”或“2”。由于字符串的长度不是 1,因此整个表达式的值是 22 不是 Bool。您收到错误是因为您尝试在条件中使用 non-boolean 值。

您可以通过评估来检查这是否确实发生了:

julia> length(string(integer)) == 1 || 2
2

Julia 手册中 here 解释了此行为。