Julia 判断逻辑

Julia 判断逻辑

在实际的业务逻辑中,常需根据不同的情况作出判断,并选择对应的分支以执行不同的处理过程,让程序适应场景的变化。这是判断逻辑(Conditional Evaluation)的经典功能。

在Julia中,关键字if、elseif、elseend组成了判断逻辑的主要结构,基本语法为:

        if条件表达式1
          # 实现体
        elseif条件表达式2
          # 实现体
        elseif条件表达式3
          # 实现体
        else
          # 实现体
        end

其中,“条件表达式”不需要像C++语言那样使用括号界定,只需用空格与if、elseif这两个关键字隔开即可。不过,条件表达式一定要是能够返回布尔型结果的逻辑运算。

提示
结构中的if是必需的,且只能出现一次;else可以不出现但若出现则只能一次;而elseif可多次使用,但需在if之后、else之前。

实际上,每个关键字(除end之外)之后的语句块均可视为复合表达式,都可以有自己的返回值,例如:
Julia 判断逻辑

Julia 判断逻辑

Julia 判断逻辑

Julia中的数值本身同样可以构成独立的语句,也同样是表达式,所以也是其所处复合表达式的子表达式。当一个数值或变量处于复合表达式的最后时(如上例所示),其便是该复合表达式的返回值。

在判断逻辑的运行过程中,程序会按需对if与elseif的逻辑条件进行判断,如果表达式为true,则会进入对应的语句块执行,执行完成后便会直接返回其中复合表达式的结果,不再执行结构中的其他语句,即if或elseif构成的多个语句块中只有一个会被执行。例如:

        julia> if 3 > 0        # 条件为true,
                  3              # 运行返回
                elseif 2 > 0   # 条件为true,
                  2              # 但不会运行
                end
        3

        julia> if 0 > 3        # 条件为false,
                  0              # 不会运行
                elseif 3 > 0   # 条件为true,
                  3              # 运行返回
                elseif 2 > 0   # 条件为true,
                  2              # 但不会运行
                else
                  nothing
                end
        3

需要注意的是,在为if或elseif提供条件表达式时,是不支持将1或0这种整型值直接作为true或false使用的,若那样做会直接报错,例如:
Julia 判断逻辑

在Julia中,1或0与true或false是完全不同的类型,不能混用。

对于语句简单或表达式并不复杂的情况,可使用三元运算符?:实现判断逻辑。例如,在表达式a ? b : c(注意各符号之间有空格)中a是条件表达式,值为true时该三元运算符返回b值,否则返回c值。例如:

julia> x=3; x>10 ? true : false   # x为3,所以>10不成立,返回第二个值false
false

julia> 3>0 ? 3 : 0
3

julia> false ? 3 : 0
0

需要注意的是,在v1.0版的Julia中,符号?及:的前后都需要有空格,否则会报错。

此外,这种简单的逻辑判断,还可以考虑使用内置的ifelse()函数,其原型为:

ifelse(condition::Bool, x, y)

当condition为true时返回x,否则返回y值。例如:

julia> ifelse(1>0,1,0)
1

julia> ifelse(1<0,1,0)
0

函数ifelse()可实现if结构或?:类似的功能,但本质却是不同的。很多时候使用ifelse()函数代替if结构能够消除过多的逻辑分支,生成更为高效的代码。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!