Skip to content

Julia 基本语法

本章介绍 Julia 语言的基本语法规则,帮助您快速上手编程。

注释

单行注释

使用 # 开始单行注释:

julia
# 这是一个单行注释
x = 10  # 行尾注释

多行注释

使用 #==# 包围多行注释:

julia
#=
这是一个多行注释
可以跨越多行
用于详细说明
=#

变量

变量命名

Julia 变量名遵循以下规则:

  • 以字母(A-Z, a-z)、下划线(_)或 Unicode 字符开头
  • 可以包含数字(但不能以数字开头)
  • 区分大小写
  • 不能使用保留字
julia
# 有效的变量名
x = 1
my_variable = 2
变量 = 3        # 支持中文
α = 0.5         # 支持希腊字母
_private = 4

# 无效的变量名
# 2nd = 5       # 不能以数字开头
# for = 6       # 不能使用保留字

变量赋值

julia
# 单个赋值
x = 10

# 多重赋值
a, b, c = 1, 2, 3

# 交换变量
a, b = b, a

# 链式赋值
x = y = z = 0

常量

使用 const 声明常量:

julia
const PI = 3.14159
const MAX_SIZE = 100

# 尝试修改常量会产生警告
# PI = 3.14  # 警告:重新定义常量

基本数据类型

数值类型

julia
# 整数
a = 42          # Int64 (64位系统)
b = Int32(42)   # Int32

# 浮点数
c = 3.14        # Float64
d = Float32(3.14)  # Float32

# 布尔值
e = true
f = false

字符和字符串

julia
# 字符(单引号)
char = 'A'

# 字符串(双引号)
str = "Hello, Julia!"

# 多行字符串
multiline = """
这是一个
多行字符串
"""

输出

julia
# print 不换行
print("Hello")
print(" World")  # 输出: Hello World

# println 自动换行
println("Hello")
println("World")
# 输出:
# Hello
# World

字符串插值

使用 $ 进行字符串插值:

julia
name = "Julia"
age = 10

println("$name is $age years old.")
# 输出: Julia is 10 years old.

# 表达式插值
println("2 + 3 = $(2 + 3)")
# 输出: 2 + 3 = 5

格式化输出

使用 @printf 宏:

julia
using Printf

@printf("整数: %d\n", 42)
@printf("浮点数: %.2f\n", 3.14159)
@printf("字符串: %s\n", "Hello")
@printf("补零: %05d\n", 42)  # 输出: 00042

输入

readline

julia
print("请输入您的名字: ")
name = readline()
println("你好, $name!")

读取数值

julia
print("请输入一个数字: ")
input = readline()
num = parse(Int, input)
println("您输入的数字是: $num")

# 或使用 Float64
num_float = parse(Float64, readline())

代码块

分号

分号用于抑制 REPL 中的输出,或在一行中分隔多个语句:

julia
# 抑制输出
x = 10;

# 多个语句在一行
a = 1; b = 2; c = 3

代码块

使用 begin...end 创建代码块:

julia
result = begin
    x = 10
    y = 20
    x + y  # 最后一个表达式的值作为块的值
end
println(result)  # 输出: 30

也可以使用括号:

julia
result = (x = 1; y = 2; x + y)
println(result)  # 输出: 3

作用域

全局作用域

在模块顶层定义的变量:

julia
global_var = 100

function show_global()
    println(global_var)
end

局部作用域

函数、循环、条件语句内部:

julia
function local_example()
    local_var = 10  # 局部变量
    println(local_var)
end

# local_var 在函数外不可访问

let 块

创建新的局部作用域:

julia
let
    x = 10
    y = 20
    println(x + y)
end
# x 和 y 在 let 块外不可访问

global 关键字

在局部作用域中访问或修改全局变量:

julia
counter = 0

function increment()
    global counter
    counter += 1
end

increment()
println(counter)  # 输出: 1

模块

定义模块

julia
module MyModule

export greet  # 导出的函数

const VERSION = "1.0"

function greet(name)
    println("Hello, $name!")
end

function internal_function()
    # 内部函数,不导出
end

end  # module

使用模块

julia
# 使用模块中导出的所有内容
using MyModule
greet("Julia")

# 只导入特定内容
using MyModule: greet

# 导入模块本身
import MyModule
MyModule.greet("Julia")

标准库模块

julia
using Statistics
using LinearAlgebra
using Random

表达式和语句

复合表达式

julia
# 使用 begin...end
z = begin
    x = 1
    y = 2
    x + y
end

# 使用分号链
z = (x = 1; y = 2; x + y)

条件表达式(三元运算符)

julia
x = 10
result = x > 5 ? "大于5" : "小于等于5"
println(result)  # 输出: 大于5

短路求值

julia
# && - 如果第一个为真,执行第二个
x = 10
x > 5 && println("x 大于 5")

# || - 如果第一个为假,执行第二个
x < 5 || println("x 不小于 5")

Nothing 和 Missing

Nothing

表示"无值"或函数无返回值:

julia
function no_return()
    println("这个函数不返回值")
end

result = no_return()
println(result)        # 输出: nothing
println(isnothing(result))  # 输出: true

Missing

表示缺失的数据(类似 SQL 的 NULL):

julia
data = [1, 2, missing, 4, 5]

println(ismissing(data[3]))  # 输出: true

# missing 的传播性
println(1 + missing)  # 输出: missing

# 跳过 missing 值
using Statistics
println(mean(skipmissing(data)))  # 输出: 3.0

类型注解

Julia 允许可选的类型注解:

julia
# 变量类型注解
x::Int = 10

# 函数参数类型
function add(a::Int, b::Int)
    return a + b
end

# 返回类型
function multiply(a, b)::Float64
    return a * b
end

代码风格建议

  1. 变量名使用小写字母和下划线

    julia
    my_variable = 10
  2. 类型名使用驼峰命名法

    julia
    struct MyCustomType
        field::Int
    end
  3. 函数名使用小写字母

    julia
    function calculate_sum(arr)
        return sum(arr)
    end
  4. 常量使用大写字母

    julia
    const MAX_ITERATIONS = 1000
  5. 适当使用空格和缩进

    julia
    function example(x, y)
        if x > 0
            return x + y
        else
            return y
        end
    end

下一步

掌握基本语法后,请继续学习:

本站内容仅供学习和研究使用。