Julia 控制流
最后修改时间:2023 年 10 月 20 日
本文讨论 Julia 中的控制流。
当 Julia 程序运行时,代码是从上到下执行的。程序的流程可以通过各种关键字来改变,包括 if/elseif/else、while 和 for。
if 条件
if 关键字用于检查一个表达式是否为真。如果为真,则执行一个语句。该语句可以是一个单独的语句,也可以是一个复合语句。复合语句由用代码块括起来的多个语句组成。代码块是用花括号括起来的代码。
r = rand(-5:5) println(r) if r > 0 println("The r variable is positive") end
生成一个随机数。如果该数字大于零,我们向终端打印一条消息。
r = rand(-5:5)
rand
函数生成一个介于 -5 到 5 之间的随机整数。
if r > 0 println("The r variable is positive") end
使用 if 关键字,我们检查生成的数字是否大于零。if 关键字后面是一个求值为布尔值的表达式。如果布尔值为真,则执行代码块。在我们的例子中,字符串r 变量为正被打印到终端。如果随机值为负,则什么也不做。代码块以 end
关键字终止。
$ julia simple.jl -4 $ julia simple.jl 1 The r variable is positive $ julia simple.jl 4 The r variable is positive
else 条件
我们可以使用 else
关键字来创建一个简单的分支。如果 if
关键字后面的表达式求值为 false,则自动执行 else
关键字后面的代码块。
r = rand(-5:5) println(r) if r > 0 println("The n variable is positive") else print("The r variable is negative or zero") end
执行 if
关键字后面的代码块或执行 else
关键字后面的代码块。
elseif 条件
我们可以使用 elseif
创建多个分支。它仅在前一个条件未满足时测试另一个条件。
请注意,我们可以在测试中使用多个 elseif
关键字。
r = rand(-5:5) println(r) if r > 0 println("The r is positive") elseif r == 0 println("The r is zero") else println("The r is negative") end
如果第一个条件求值为真,例如随机值大于零,则执行第一个代码块,并跳过其余两个代码块。如果第一个条件不满足,则检查 elseif
关键字后面的第二个条件。如果第二个条件求值为真,则执行第二个代码块。如果不满足,则执行 else 关键字后面的第三个代码块。如果之前的条件未满足,则始终执行 else 代码块。
$ julia main.jl 4 The r is positive $ julia main.jl 5 The r is positive $ julia main.jl 0 The r is zero $ julia main.jl -1 The r is negative
while 循环
while
关键字用于创建循环。while 循环内的语句一直执行,直到表达式求值为 false。
vals = [22, 34, 12, 32, 4] let i = length(vals) mysum = 0 while i != 1 i -= 1 mysum = mysum + vals[i] end println("The sum is: ", mysum) end
我们要计算 vals
数组中所有值的总和。我们使用 while 循环。我们使用 length
函数确定列表的长度。while 循环一遍又一遍地执行,直到 i 等于一。在循环体中,我们递减计数器并计算值的总和。
$ julia whilestm.jl The sum is: 100
break 关键字
break 关键字用于在需要时中断循环。
while true r = rand(1:30) print("$r ") if r == 22 break end end println()
在我们的示例中,我们打印随机整数。如果数字等于 22,则使用 break 关键字中断循环。while true
创建一个无限循环。break 用于跳出这个无限循环。
$ julia breakstm.jl 15 7 24 27 7 22
continue 关键字
continue
语句用于中断当前循环而不跳出整个循环。它启动一个新的循环。
let num = 0 while num < 1000 num = num + 1 if num % 2 == 0 continue end print("$num ") end end println()
在示例中,我们打印所有小于 1000 且不能被 2 整除的数字。
if num % 2 == 0 continue end
当数字可以被 2 整除时,我们调用 continue,循环中断并开始一个新的循环。因此,该数字不会被打印。
for 循环
for/in
关键字用于迭代序列。序列可以是集合、字符串或范围。
words = ["sky", "summer", "winter", "war", "rock"] for word in words println(word) end println("---------------------------------") for word = words println(word) end println("---------------------------------") word = "falcon" for e in word println(e) end println("---------------------------------") for e in range(1,5) println(e) end
该程序使用 for 循环迭代序列。
words = ["sky", "summer", "winter", "war", "rock"]
我们定义一个单词数组。
for word in words println(word) end
我们使用 for/in
逐个遍历数组元素,并将每个元素打印到控制台。
for word = words println(word) end
Julia 还有一个替代语法:for/=
。
word = "falcon" for e in word println(e) end
这里我们迭代字符串字符。
for e in range(1,5) println(e) end
我们迭代由 range
创建的值范围。
$ julia main.jl sky summer winter war rock --------------------------------- sky summer winter war rock --------------------------------- f a l c o n --------------------------------- 1 2 3 4 5
来源
在本文中,我们学习了 Julia 中的程序控制流。