变量与常量 #
一、变量基础 #
1.1 定义变量 #
使用 var 关键字定义变量:
mojo
def main():
var count = 0
count = count + 1
print(count)
main()
1.2 类型注解 #
mojo
def main():
var count: Int = 0
var name: String = "Mojo"
var pi: Float64 = 3.14159
main()
1.3 多变量定义 #
mojo
def main():
var a = 1
var b = 2
var c = 3
var x, y, z = 1, 2, 3
main()
二、常量基础 #
2.1 定义常量 #
使用 let 关键字定义常量:
mojo
def main():
let pi = 3.14159
let max_size = 100
print(pi, max_size)
main()
2.2 类型注解 #
mojo
def main():
let pi: Float64 = 3.14159
let name: String = "Mojo"
main()
2.3 常量不可修改 #
mojo
def main():
let x = 10
x = 20
main()
三、var vs let #
| 特性 | var | let |
|---|---|---|
| 可变性 | 可修改 | 不可修改 |
| 默认选择 | 需要修改时 | 不需要修改时 |
| 安全性 | 较低 | 较高 |
| 性能 | 相同 | 相同 |
3.1 使用场景 #
mojo
def main():
let max_count = 100
var current_count = 0
while current_count < max_count:
current_count += 1
print(current_count)
main()
四、作用域 #
4.1 块作用域 #
mojo
def main():
let outer = "outer"
if True:
let inner = "inner"
print(outer)
print(inner)
print(outer)
main()
4.2 函数作用域 #
mojo
def function_one():
let local_var = "local"
print(local_var)
def function_two():
print(local_var)
def main():
function_one()
function_two()
main()
4.3 嵌套作用域 #
mojo
def main():
let x = 1
if True:
let y = 2
if True:
let z = 3
print(x, y, z)
print(x, y)
print(x)
main()
五、变量遮蔽 #
5.1 同名变量遮蔽 #
mojo
def main():
let x = 10
print(x)
if True:
let x = 20
print(x)
print(x)
main()
5.2 避免遮蔽 #
mojo
def main():
let outer_x = 10
if True:
let inner_x = 20
print(outer_x, inner_x)
main()
六、全局变量与常量 #
6.1 模块级常量 #
mojo
let MAX_SIZE = 100
let DEFAULT_NAME = "Mojo"
def main():
print(MAX_SIZE)
print(DEFAULT_NAME)
main()
6.2 全局变量 #
mojo
var global_counter = 0
def increment():
global_counter += 1
def main():
print(global_counter)
increment()
print(global_counter)
main()
七、延迟初始化 #
7.1 先声明后赋值 #
mojo
def main():
var result: Int
if True:
result = 10
else:
result = 20
print(result)
main()
7.2 条件初始化 #
mojo
def main():
let condition = True
var value: Int
if condition:
value = 100
else:
value = 0
print(value)
main()
八、类型推断 #
8.1 自动类型推断 #
mojo
def main():
let integer = 42
let float_num = 3.14
let string = "Hello"
let boolean = True
print(integer)
print(float_num)
print(string)
print(boolean)
main()
8.2 显式类型指定 #
mojo
def main():
let small_int: Int8 = 127
let big_int: Int64 = 9223372036854775807
let float32: Float32 = 3.14
main()
九、最佳实践 #
9.1 优先使用let #
mojo
def main():
let pi = 3.14159
let radius = 5.0
let area = pi * radius * radius
print(area)
main()
9.2 有意义的命名 #
mojo
def main():
let max_retries = 3
let timeout_seconds = 30
var current_attempt = 0
while current_attempt < max_retries:
current_attempt += 1
main()
9.3 最小作用域 #
mojo
def main():
if True:
let temp = calculate_temp()
process(temp)
main()
十、总结 #
本章学习了:
var定义可变变量let定义不可变常量- 作用域规则
- 变量遮蔽
- 类型推断
- 最佳实践
下一章,我们将学习基本数据类型。
最后更新:2026-03-27