# 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 } ```