或 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
,因此整个表达式的值是 2
而 2
不是 Bool
。您收到错误是因为您尝试在条件中使用 non-boolean 值。
您可以通过评估来检查这是否确实发生了:
julia> length(string(integer)) == 1 || 2
2
Julia 手册中 here 解释了此行为。
我想了解 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
,因此整个表达式的值是 2
而 2
不是 Bool
。您收到错误是因为您尝试在条件中使用 non-boolean 值。
您可以通过评估来检查这是否确实发生了:
julia> length(string(integer)) == 1 || 2
2
Julia 手册中 here 解释了此行为。