循环控制 #

一、break语句 #

1.1 基本用法 #

break立即退出当前循环:

julia
for i in 1:10
    i == 5 && break
    println(i)
end

1.2 查找元素 #

julia
function find_first(arr, value)
    for (i, x) in enumerate(arr)
        x == value && return i
    end
    return nothing
end

find_first([1, 2, 3, 4, 5], 3)
find_first([1, 2, 3, 4, 5], 10)

1.3 while循环中的break #

julia
i = 1
while true
    println(i)
    i += 1
    i > 5 && break
end

二、continue语句 #

2.1 基本用法 #

continue跳过当前迭代,继续下一次:

julia
for i in 1:10
    i % 2 == 0 && continue
    println(i)
end

2.2 过滤元素 #

julia
for x in [1, -2, 3, -4, 5]
    x < 0 && continue
    println(x)
end

2.3 跳过特定值 #

julia
for x in 1:20
    x % 3 == 0 && continue
    x % 5 == 0 && continue
    println(x)
end

三、return语句 #

3.1 函数返回 #

julia
function find_value(arr, predicate)
    for x in arr
        predicate(x) && return x
    end
    return nothing
end

find_value([1, 2, 3, 4, 5], x -> x > 3)

3.2 提前退出 #

julia
function process(arr)
    for x in arr
        x < 0 && return "Negative found"
    end
    return "All positive"
end

process([1, 2, 3])
process([1, -2, 3])

四、嵌套循环控制 #

4.1 标签语法 #

使用标签控制嵌套循环:

julia
outer: for i in 1:3
    for j in 1:3
        if i == 2 && j == 2
            break outer
        end
        println("($i, $j)")
    end
end

4.2 continue标签 #

julia
outer: for i in 1:3
    for j in 1:3
        if j == 2
            continue outer
        end
        println("($i, $j)")
    end
end

4.3 实际应用 #

julia
function find_pair(arr, target)
    outer: for i in 1:length(arr)-1
        for j in i+1:length(arr)
            if arr[i] + arr[j] == target
                return (i, j)
            end
        end
    end
    return nothing
end

find_pair([1, 2, 3, 4, 5], 7)

五、@goto和@label #

5.1 基本用法 #

julia
i = 0
@label start
i += 1
println(i)
i < 5 && @goto start

5.2 模拟循环 #

julia
i = 1
@label loop
println(i)
i += 1
i <= 5 && @goto loop

六、实践练习 #

6.1 练习1:查找素数 #

julia
function find_primes(n)
    primes = Int[]
    for i in 2:n
        is_prime = true
        for p in primes
            p * p > i && break
            i % p == 0 && (is_prime = false; break)
        end
        is_prime && push!(primes, i)
    end
    return primes
end

find_primes(50)

6.2 练习2:矩阵搜索 #

julia
function search_matrix(mat, value)
    for i in axes(mat, 1)
        for j in axes(mat, 2)
            mat[i, j] == value && return (i, j)
        end
    end
    return nothing
end

mat = [1 2 3; 4 5 6; 7 8 9]
search_matrix(mat, 5)
search_matrix(mat, 10)

6.3 练习3:验证输入 #

julia
function get_valid_input(prompt, validator)
    while true
        print(prompt)
        input = readline()
        
        try
            value = parse(Int, input)
            validator(value) && return value
            println("Invalid value, try again")
        catch
            println("Please enter a number")
        end
    end
end

age = get_valid_input("Enter your age (1-150): ", x -> 1 <= x <= 150)

七、总结 #

本章我们学习了:

  1. break:退出循环
  2. continue:跳过当前迭代
  3. return:函数返回
  4. 循环标签:控制嵌套循环
  5. @goto/@label:跳转语句

接下来让我们学习Julia的异常处理!

最后更新:2026-03-27