vety-language/doc/03_functions_and_modules.md

142 lines
2.3 KiB
Markdown

# Vety语言函数和模块
## 1. 函数定义
### 1.1 基本函数定义
使用`func`关键字定义函数:
```vety
func add(a: i32, b: i32): i32 {
return a + b
}
// 无返回值的函数
func print_message(msg: string): void {
print(msg)
}
```
### 1.2 函数参数
函数参数必须指定类型:
```vety
func greet(name: string, age: i32): string {
return "Hello, " + name + "! You are " + age + " years old."
}
```
### 1.3 返回值
- 函数必须指定返回值类型
- 使用`return`语句返回值
- 如果函数不需要返回值,使用`void`类型
```vety
func calculate_area(width: f64, height: f64): f64 {
return width * height
}
```
## 2. 原生函数
使用`native`关键字声明原生函数,这些函数由底层实现:
```vety
native func print(message: string): void
native func read_line(): string
```
## 3. 模块系统
### 3.1 导入模块
使用`import`关键字导入其他模块:
```vety
import io // 导入标准库的io模块
import math // 导入数学模块
```
### 3.2 模块别名
可以使用`as`关键字为导入的模块指定别名:
```vety
import module_name as alias_name
```
## 4. 函数调用
### 4.1 基本调用
```vety
let result = add(5, 3)
print("Hello, World!")
```
### 4.2 模块函数调用
```vety
let current_time = time.now() // 调用模块中的函数
let random_number = math.random(1, 100)
```
## 5. 注解
使用`@`符号添加函数注解:
```vety
@deprecated
func old_function(): void {
// 已废弃的函数
}
@test
func test_feature(): void {
// 测试函数
}
```
## 6. 错误处理
函数可以抛出错误,调用者需要处理这些错误:
```vety
func divide(a: f64, b: f64): f64 {
if (b == 0) {
throw "Division by zero"
}
return a / b
}
try {
let result = divide(10.0, 0.0)
} catch(e) {
print("除法运算失败")
}
```
## 7. 最佳实践
- 函数名使用小写字母和下划线
- 函数应该只做一件事情
- 参数数量不宜过多
- 适当添加注释说明函数功能
- 处理所有可能的错误情况
```vety
// 好的函数示例
func calculate_average(numbers: array<): f64 {
if (numbers.length == 0) {
throw "Empty array"
}
let sum: f64 = 0.0
for num in numbers {
sum = sum + num
}
return sum / numbers.length
}
```