不带"else"的Julia三元运算符



考虑Julia 中的三元运算符

julia> x = 1 ; y = 2
julia> println(x < y ? "less than" : "not less than")
less than

问题:有没有办法省略语句的:部分?相当于的东西

if condition
# dosomething
end

但没有写下如果不满足条件,就不应该采取任何行动。

NB:我研究了答案,但没有结果,即使是在相关问题中(1,2(

只需执行:

condition && do_something

例如:

2 < 3 && println("hello!")

说明:

&&是Julia中的一个短循环算子。因此,只有在需要对第二个值进行评估时,才会对其进行评估。因此,当第一condition评估为false时,不需要评估第二部分。

最后,请注意,您也可以在作业中使用这个:

julia> x = 2 > 3 && 7
false
julia> x = 2 < 3 && 7
7

然而,这会使x类型不稳定,因此您可能希望将赋值的右侧包裹在Int(如x = Int(2 > 3 && 7)(周围,而您的x将始终是Int

&&通常用于此,因为它很短,但你必须知道阅读它的技巧。我有时发现只使用常规的旧if语句更可读。在Julia中,如果你想节省空间,它不需要跨越多条线。

julia> x = 1; y = 2;
julia> if (x < y) println("less than") end
less than
julia> if (x > y) println("greater than") else println("not greater than") end
not greater than

注意,在这种情况下,条件周围不需要括号;我只是为了清楚起见才加上它们。另外,请注意,为了清晰起见,我将println移到了字符串旁边,但如果您愿意,可以将整个if语句放在println中,就像您在问题中所做的那样。

最新更新