一、复合表达式
复合表达式指的是多条语句组成的独立语句块。
它类似于java中的普通代码块。
格式:
begin
# 任意多的语句
end
或者
子表达式;子表达式;子表达式....
或者(圆括号代表免除语法歧义)
(子表达式;子表达式;子表达式....)
二、判断逻辑
在Julia中,判断逻辑由关键字 if 、elseif、 else 和 end 组成。
基本语法:
if 条件表达式1
# 实现体
elseif 条件表达式2
# 实现体
elseif 条件表达式3
# 实现体
else
# 实现体
end
要求:
结构中的if是必须的,且只能出现一次;else可以不出现但若出现也只能一次;而elseif可多次使用,但需在if之后、else之前。
注意点:
-
在为if或elseif提供条件表达式时,是不支持将1或0这种整型值直接作为true或false使用的。
-
三元运算符,Julia也是支持的。同时,ifelse()函数和三元运算符的作用一致。
a>b ? 1:2 等同于 ifelse(a>b, a, 2)
三、循环逻辑
在Julia中,提供了和java一样的两个关键字 break 和 continue ,以便对循环进行控制。
1、while
语法:
while 条件表达式
# 语句块
end
2、for
语法:
for 遍历表达式
# 语句块
end
Julia提供了三种基本的遍历表达式:
第一种:
for 循环变量 = 可迭代数据集
# 更多语句
end
第二种:
for 循环变量 in 可迭代数据集
#更多语句
end
第三种:
for 循环变量 ∈ 可迭代数据集
#更多语句
end
三种方式是相同的、等价的,可以任选其一。
其中的可迭代数据集,主要是指元组(Tuple)、字典(Dict)及集合(Set),或者数组(Array)及范围表达式(Range)等。
在for循环中,支持同时对多个数据集进行遍历,而且遍历操作符也可以混用。
在多遍历的表达中,得到的循环变量组合实际是每个数据集的笛卡尔积。
四、异常处理
1、异常触发
Julia中内置定义了很多错误类型,均继承自抽象类型Exception。
通过throw()函数显式地抛出。
Julia除了预定义的错误类型,也可以进行自定义异常类型。它有一个通用的异常类型ErrorException。
自定义异常类型只需要声明为Exception新的子类型。
其中的Stacktrace可以定位到函数名称和出现问题的位置。
Julia提供了几个定义日志级别的宏,类似于java中的注解。@error、@info、@warn、@debug
关于日志方面,Julia有一个Logging包,功能很全面。
2、异常捕捉
在异常发生时,throw()抛出错误后,需要对其捕捉才能在恰当的位置有针对性地进行处置。
在Julia提供的捕捉机制中,将可疑语句放在try和end组成的异常处理结构中。
try
# 正常语句块
catch 异常类型变量
# 异常处理语句块
finally
# 收尾清理语句块
end
在Julia的异常处理语法中,如果出现无法正确处理的错误,则可以通过rethrow()函数、backtrace()函数或catch_backtrace()函数对发现的异常再次传播。