Tuan编程语言
返回 "学生{学号: {本.学号}, 姓名: {本.姓名}, 年龄: {本.年龄}, 平均分: {本.获取平均分():.1f}}"响应 = 网络.HTTP.发布("https://api.example.com/users", JSON.序列化(数据))// 文件: my_package/package.tuan / File: my_package/package.tuan。输出(" - {学生
Tuan 编程语言:完整规范与实现 (双语版)
Tuan Programming Language: Complete Specification & Implementation (Bilingual)
---
🎯 一、Tuan语言设计哲学 / Tuan Language Design Philosophy
核心理念 / Core Philosophy
```
Tuan(图安) = 图灵完备 + 安全 + 实用
Turing Complete + Safe + Practical
设计目标:让编程回归本质,让表达更自然
Design Goal: Return to the essence of programming, make expression more natural
```
设计原则 / Design Principles
1. 简约性:语法简洁,学习曲线平缓
Simplicity: Concise syntax, gentle learning curve
2. 实用性:解决实际问题,生产力优先
Practicality: Solve real problems, productivity first
3. 安全性:类型安全,内存安全,并发安全
Safety: Type safety, memory safety, concurrency safety
4. 可扩展性:易于扩展,支持多种编程范式
Extensibility: Easy to extend, supports multiple paradigms
5. 跨平台:一次编写,到处运行
Cross-platform: Write once, run anywhere
---
📝 二、Tuan基础语法 / Tuan Basic Syntax
Hello, Tuan!
```tuan
// 单行注释 / Single-line comment
/*
多行注释
Multi-line comment
This is Tuan's first program
*/
// 输出语句 / Print statement
输出("你好,Tuan世界!") // Output to console / 控制台输出
print("Hello, Tuan World!") // English alias
// 变量定义 / Variable definition
名字 = "张三"
name = "Zhang San"
年龄 = 25
age = 25
分数 = 95.5
score = 95.5
是否通过 = 真
is_passed = true
// 同时定义多个变量 / Define multiple variables simultaneously
(姓名, 年龄, 城市) = ("李四", 30, "北京")
(name, age, city) = ("Li Si", 30, "Beijing")
// 类型注解(可选)/ Type annotations (optional)
学号: 整数 = 2024001
student_id: int = 2024001
成绩: 小数 = 88.5
grade: float = 88.5
```
基本数据类型 / Basic Data Types
```tuan
// 数值类型 / Numeric types
整数 = 42 // 整数 / integer
小数 = 3.14159 // 浮点数 / floating-point
长整数 = 1000000000L // 长整数 / long integer
复数 = 3 + 4i // 复数 / complex number
// 文本类型 / Text types
字符串 = "Tuan编程语言"
text = "Tuan Programming Language"
字符 = 'A'
character = 'A'
多行文本 = """
这是多行
文本字符串
"""
multiline_text = """
This is a multi-line
text string
"""
// 布尔类型 / Boolean type
是 = 真
yes = true
否 = 假
no = false
// 空值类型 / Null type
空值 = 空
null_value = null
// 范围类型 / Range type
范围 = 1..10 // 1到10(包含10)/ 1 to 10 (inclusive)
range = 1..10
半开范围 = 1..<10 // 1到9 / 1 to 9 (exclusive)
half_open = 1..<10
```
运算符 / Operators
```tuan
// 算术运算符 / Arithmetic operators
加 = 10 + 5 // 15 / addition
减 = 10 - 5 // 5 / subtraction
乘 = 10 * 5 // 50 / multiplication
除 = 10 / 3 // 3.333... / division
整除 = 10 // 3 // 3 / integer division
取余 = 10 % 3 // 1 / modulo
幂 = 2 ** 3 // 8 / exponentiation
// 比较运算符 / Comparison operators
等于 = 5 == 5 // 真 / equal to
不等于 = 5 != 3 // 真 / not equal to
大于 = 10 > 5 // 真 / greater than
小于 = 3 < 5 // 真 / less than
大于等于 = 5 >= 5 // 真 / greater than or equal to
小于等于 = 4 <= 5 // 真 / less than or equal to
// 逻辑运算符 / Logical operators
与 = 真 && 假 // 假 / and
或 = 真 || 假 // 真 / or
非 = !真 // 假 / not
// 位运算符 / Bitwise operators
位与 = 0b1010 & 0b1100 // 0b1000 / bitwise AND
位或 = 0b1010 | 0b1100 // 0b1110 / bitwise OR
异或 = 0b1010 ^ 0b1100 // 0b0110 / bitwise XOR
左移 = 0b1010 << 2 // 0b101000 / left shift
右移 = 0b1010 >> 1 // 0b0101 / right shift
```
---
🏗️ 三、Tuan数据结构 / Tuan Data Structures
数组(固定大小)/ Array (fixed size)
```tuan
// 数组定义 / Array definition
数字数组: 整数[5] = [1, 2, 3, 4, 5]
number_array: int[5] = [1, 2, 3, 4, 5]
字符串数组 = ["苹果", "香蕉", "橙子"]
string_array = ["apple", "banana", "orange"]
// 数组操作 / Array operations
长度 = 数字数组.长度() // 5 / length
第一个元素 = 数字数组[0] // 1 / first element
最后元素 = 数字数组[-1] // 5 / last element
子数组 = 数字数组[1..3] // [2, 3, 4] / subarray
// 多维数组 / Multidimensional array
矩阵: 整数[3][3] = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
matrix: int[3][3] = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
元素 = 矩阵[1][2] // 6 / element
```
列表(动态数组)/ List (dynamic array)
```tuan
// 列表定义 / List definition
成绩列表 = 列表<小数>() // 空列表 / empty list
grade_list = list<float>()
商品列表 = 列表<字符串>(["电脑", "手机", "平板"])
product_list = list<string>(["computer", "phone", "tablet"])
// 列表操作 / List operations
商品列表.添加("耳机") // 添加元素 / add element
product_list.append("headphones")
商品列表.插入(1, "键盘") // 在位置1插入 / insert at position 1
product_list.insert(1, "keyboard")
商品列表.移除("手机") // 移除元素 / remove element
product_list.remove("phone")
是否包含 = 商品列表.包含("电脑") // 真 / contains
contains = product_list.contains("computer")
// 列表推导式 / List comprehension
平方列表 = [x ** 2 对于 x 在 1..10] // [1, 4, 9, ..., 100]
squares = [x ** 2 for x in 1..10]
偶数列表 = [x 对于 x 在 1..20 如果 x % 2 == 0]
evens = [x for x in 1..20 if x % 2 == 0]
```
字典(键值对)/ Dictionary (key-value pairs)
```tuan
// 字典定义 / Dictionary definition
学生信息 = 字典<字符串, 任意类型>()
student_info = dict<string, any>()
学生成绩 = {
"张三": 95,
"李四": 88,
"王五": 92
}
student_grades = {
"Zhang San": 95,
"Li Si": 88,
"Wang Wu": 92
}
// 字典操作 / Dictionary operations
成绩 = 学生成绩["张三"] // 95 / get value
grade = student_grades["Zhang San"]
学生成绩["赵六"] = 90 // 添加/更新 / add/update
student_grades["Zhao Liu"] = 90
是否包含键 = 学生成绩.包含键("李四") // 真 / contains key
has_key = student_grades.has_key("Li Si")
所有键 = 学生成绩.键() // ["张三", "李四", "王五"]
all_keys = student_grades.keys()
所有值 = 学生成绩.值() // [95, 88, 92]
all_values = student_grades.values()
// 字典遍历 / Dictionary iteration
对于 (姓名, 成绩) 在 学生成绩.条目() {
输出("姓名:{姓名},成绩:{成绩}")
}
for (name, grade) in student_grades.entries() {
print("Name: {name}, Grade: {grade}")
}
```
集合 / Set
```tuan
// 集合定义 / Set definition
数字集合 = 集合<整数>([1, 2, 3, 3, 2]) // {1, 2, 3}
number_set = set<int>([1, 2, 3, 3, 2])
字符串集合 = 集合<字符串>(["A", "B", "C"])
string_set = set<string>(["A", "B", "C"])
// 集合操作 / Set operations
数字集合.添加(4) // 添加元素 / add element
number_set.add(4)
数字集合.移除(2) // 移除元素 / remove element
number_set.remove(2)
并集 = 集合1 | 集合2 // 并集 / union
union = set1 | set2
交集 = 集合1 & 集合2 // 交集 / intersection
intersection = set1 & set2
差集 = 集合1 - 集合2 // 差集 / difference
difference = set1 - set2
```
元组 / Tuple
```tuan
// 元组定义 / Tuple definition
坐标 = (10.5, 20.3) // 二元组 / 2-tuple
coordinates = (10.5, 20.3)
学生 = ("张三", 20, "计算机") // 三元组 / 3-tuple
student = ("Zhang San", 20, "Computer Science")
// 元组解构 / Tuple destructuring
(x, y) = 坐标
(姓名, 年龄, 专业) = 学生
(name, age, major) = student
// 元组访问 / Tuple access
横坐标 = 坐标[0] // 10.5 / x-coordinate
纵坐标 = 坐标[1] // 20.3 / y-coordinate
```
---
🔄 四、控制流程 / Control Flow
条件判断 / Conditional Statements
```tuan
// 如果-否则如果-否则 / If-else if-else
分数 = 85
score = 85
如果 分数 >= 90 {
等级 = "优秀"
} 否则如果 分数 >= 80 {
等级 = "良好"
} 否则如果 分数 >= 60 {
等级 = "及格"
} 否则 {
等级 = "不及格"
}
if score >= 90 {
grade = "Excellent"
} else if score >= 80 {
grade = "Good"
} else if score >= 60 {
grade = "Pass"
} else {
grade = "Fail"
}
// 三目运算符 / Ternary operator
结果 = 分数 >= 60 ? "通过" : "不通过"
result = score >= 60 ? "Pass" : "Fail"
// 匹配语句(类似switch)/ Match statement (like switch)
月份 = 3
month = 3
匹配 月份 {
情况 1, 2, 3: 季节 = "春季"
情况 4, 5, 6: 季节 = "夏季"
情况 7, 8, 9: 季节 = "秋季"
情况 10, 11, 12: 季节 = "冬季"
默认: 季节 = "未知"
}
match month {
case 1, 2, 3: season = "Spring"
case 4, 5, 6: season = "Summer"
case 7, 8, 9: season = "Autumn"
case 10, 11, 12: season = "Winter"
default: season = "Unknown"
}
// 卫语句 / Guard statements
匹配 值 {
情况 x 如果 x > 0: 输出("正数")
情况 x 如果 x < 0: 输出("负数")
情况 _: 输出("零")
}
match value {
case x if x > 0: print("Positive")
case x if x < 0: print("Negative")
case _: print("Zero")
}
```
循环 / Loops
```tuan
// 对于循环(for-each)/ For loop (for-each)
水果列表 = ["苹果", "香蕉", "橙子"]
fruits = ["apple", "banana", "orange"]
对于 水果 在 水果列表 {
输出(水果)
}
for fruit in fruits {
print(fruit)
}
// 范围循环 / Range loop
对于 i 在 1..10 {
输出(i) // 1, 2, 3, ..., 10
}
for i in 1..10 {
print(i) // 1, 2, 3, ..., 10
}
// 当循环(while)/ While loop
计数 = 0
count = 0
当 计数 < 5 {
输出(计数)
计数 = 计数 + 1
}
while count < 5 {
print(count)
count = count + 1
}
// 执行-当循环(do-while)/ Do-while loop
计数 = 0
count = 0
执行 {
输出(计数)
计数 = 计数 + 1
} 当 计数 < 5
do {
print(count)
count = count + 1
} while count < 5
// 循环控制 / Loop control
对于 i 在 1..10 {
如果 i == 3 {
继续 // 跳过本次迭代 / skip iteration
}
如果 i == 7 {
中断 // 退出循环 / break loop
}
输出(i)
}
for i in 1..10 {
if i == 3 {
continue // skip iteration
}
if i == 7 {
break // break loop
}
print(i)
}
```
---
🏢 五、函数 / Functions
函数定义 / Function Definition
```tuan
// 基本函数 / Basic function
函数 问候(姓名: 字符串): 字符串 {
返回 "你好," + 姓名 + "!"
}
function greet(name: string): string {
return "Hello, " + name + "!"
}
// 带默认参数的函数 / Function with default parameters
函数 计算面积(长: 小数, 宽: 小数 = 1.0): 小数 {
返回 长 * 宽
}
function calculate_area(length: float, width: float = 1.0): float {
return length * width
}
// 多返回值函数 / Function with multiple returns
函数 统计(数据: 列表<小数>): (小数, 小数, 小数) {
总和 = 0.0
sum = 0.0
对于 值 在 数据 {
总和 = 总和 + 值
sum = sum + value
}
平均值 = 总和 / 数据.长度()
average = sum / data.length()
最大值 = 数据.最大值()
max_value = data.max()
最小值 = 数据.最小值()
min_value = data.min()
返回 (平均值, 最大值, 最小值)
return (average, max_value, min_value)
}
// 匿名函数(lambda)/ Anonymous function (lambda)
平方 = 函数(x: 整数): 整数 { 返回 x * x }
square = function(x: int): int { return x * x }
平方(5) // 25
square(5) // 25
// 箭头函数简写 / Arrow function shorthand
平方 = (x: 整数) => x * x
square = (x: int) => x * x
加 = (a: 整数, b: 整数) => a + b
add = (a: int, b: int) => a + b
```
高阶函数 / Higher-order Functions
```tuan
// 函数作为参数 / Function as parameter
函数 应用函数(数据: 列表<整数>, 转换器: 函数<整数, 整数>): 列表<整数> {
结果 = 列表<整数>()
对于 值 在 数据 {
结果.添加(转换器(值))
}
返回 结果
}
function apply_function(data: list<int>, transformer: function<int, int>): list<int> {
result = list<int>()
for value in data {
result.append(transformer(value))
}
return result
}
// 使用 / Usage
数据 = [1, 2, 3, 4, 5]
data = [1, 2, 3, 4, 5]
平方数据 = 应用函数(数据, (x) => x * x) // [1, 4, 9, 16, 25]
squared_data = apply_function(data, (x) => x * x)
// 内置高阶函数 / Built-in higher-order functions
数据 = [1, 2, 3, 4, 5]
data = [1, 2, 3, 4, 5]
// 映射 / Map
平方列表 = 数据.映射((x) => x * x)
squares = data.map((x) => x * x)
// 过滤 / Filter
偶数列表 = 数据.过滤((x) => x % 2 == 0)
evens = data.filter((x) => x % 2 == 0)
// 归约 / Reduce
总和 = 数据.归约(0, (累计, 当前) => 累计 + 当前)
sum = data.reduce(0, (accumulator, current) => accumulator + current)
// 排序 / Sort
排序列表 = 数据.排序((a, b) => a - b)
sorted_list = data.sort((a, b) => a - b)
```
闭包 / Closures
```tuan
函数 创建计数器(): 函数<空, 整数> {
计数 = 0
返回 函数(): 整数 {
计数 = 计数 + 1
返回 计数
}
}
function create_counter(): function<null, int> {
count = 0
return function(): int {
count = count + 1
return count
}
}
计数器 = 创建计数器()
counter = create_counter()
计数器() // 1
counter() // 1
计数器() // 2
counter() // 2
计数器() // 3
counter() // 3
```
---
🎯 六、面向对象编程 / Object-Oriented Programming
类定义 / Class Definition
```tuan
// 基本类 / Basic class
类 学生 {
// 属性 / Properties
私有 姓名: 字符串
private name: string
私有 年龄: 整数
private age: int
私有 成绩: 小数
private score: float
// 构造函数 / Constructor
构造(姓名: 字符串, 年龄: 整数, 成绩: 小数 = 0.0) {
本.姓名 = 姓名
本.年龄 = 年龄
本.成绩 = 成绩
}
constructor(name: string, age: int, score: float = 0.0) {
self.name = name
self.age = age
self.score = score
}
// 方法 / Methods
函数 获取姓名(): 字符串 {
返回 本.姓名
}
function get_name(): string {
return self.name
}
函数 设置成绩(新成绩: 小数) {
如果 新成绩 >= 0 且 新成绩 <= 100 {
本.成绩 = 新成绩
}
}
function set_score(new_score: float) {
if new_score >= 0 and new_score <= 100 {
self.score = new_score
}
}
函数 获取等级(): 字符串 {
如果 本.成绩 >= 90 { 返回 "A" }
否则如果 本.成绩 >= 80 { 返回 "B" }
否则如果 本.成绩 >= 70 { 返回 "C" }
否则如果 本.成绩 >= 60 { 返回 "D" }
否则 { 返回 "F" }
}
function get_grade(): string {
if self.score >= 90 { return "A" }
else if self.score >= 80 { return "B" }
else if self.score >= 70 { return "C" }
else if self.score >= 60 { return "D" }
else { return "F" }
}
// 字符串表示 / String representation
覆盖 函数 转字符串(): 字符串 {
返回 "学生{姓名: {本.姓名}, 年龄: {本.年龄}, 成绩: {本.成绩}}"
}
override function to_string(): string {
return "Student{name: {self.name}, age: {self.age}, score: {self.score}}"
}
}
// 使用类 / Using class
张三 = 学生("张三", 20, 88.5)
zhang_san = Student("Zhang San", 20, 88.5)
输出(张三.获取姓名()) // "张三"
print(zhang_san.get_name()) // "Zhang San"
张三.设置成绩(92.0)
zhang_san.set_score(92.0)
输出(张三.获取等级()) // "A"
print(zhang_san.get_grade()) // "A"
输出(张三) // "学生{姓名: 张三, 年龄: 20, 成绩: 92.0}"
print(zhang_san) // "Student{name: Zhang San, age: 20, score: 92.0}"
```
继承与多态 / Inheritance & Polymorphism
```tuan
// 基类 / Base class
抽象类 图形 {
// 抽象方法 / Abstract methods
抽象 函数 计算面积(): 小数
abstract function calculate_area(): float
抽象 函数 计算周长(): 小数
abstract function calculate_perimeter(): float
// 具体方法 / Concrete method
函数 显示信息() {
输出("面积: {本.计算面积()}, 周长: {本.计算周长()}")
}
function display_info() {
print("Area: {self.calculate_area()}, Perimeter: {self.calculate_perimeter()}")
}
}
// 派生类 / Derived class
类 圆形 继承 图形 {
私有 半径: 小数
private radius: float
构造(半径: 小数) {
本.半径 = 半径
}
constructor(radius: float) {
self.radius = radius
}
覆盖 函数 计算面积(): 小数 {
返回 3.14159 * 本.半径 * 本.半径
}
override function calculate_area(): float {
return 3.14159 * self.radius * self.radius
}
覆盖 函数 计算周长(): 小数 {
返回 2 * 3.14159 * 本.半径
}
override function calculate_perimeter(): float {
return 2 * 3.14159 * self.radius
}
}
类 矩形 继承 图形 {
私有 长: 小数
private length: float
私有 宽: 小数
private width: float
构造(长: 小数, 宽: 小数) {
本.长 = 长
本.宽 = 宽
}
constructor(length: float, width: float) {
self.length = length
self.width = width
}
覆盖 函数 计算面积(): 小数 {
返回 本.长 * 本.宽
}
override function calculate_area(): float {
return self.length * self.width
}
覆盖 函数 计算周长(): 小数 {
返回 2 * (本.长 + 本.宽)
}
override function calculate_perimeter(): float {
return 2 * (self.length + self.width)
}
}
// 使用多态 / Using polymorphism
图形列表 = 列表<图形>([
圆形(5.0),
矩形(4.0, 6.0),
圆形(3.0)
])
shape_list = list<Shape>([
Circle(5.0),
Rectangle(4.0, 6.0),
Circle(3.0)
])
对于 图形 在 图形列表 {
图形.显示信息()
}
for shape in shape_list {
shape.display_info()
}
```
接口 / Interfaces
```tuan
// 接口定义 / Interface definition
接口 可打印 {
函数 打印(): 空
}
interface Printable {
function print(): null
}
接口 可比较<T> {
函数 比较(其他: T): 整数
}
interface Comparable<T> {
function compare(other: T): int
}
// 实现接口 / Implementing interfaces
类 文档 实现 可打印, 可比较<文档> {
私有 内容: 字符串
private content: string
构造(内容: 字符串) {
本.内容 = 内容
}
constructor(content: string) {
self.content = content
}
实现 函数 打印(): 空 {
输出("文档内容: {本.内容}")
}
implement function print(): null {
print("Document content: {self.content}")
}
实现 函数 比较(其他: 文档): 整数 {
返回 本.内容.长度() - 其他.内容.长度()
}
implement function compare(other: Document): int {
return self.content.length() - other.content.length()
}
}
```
枚举 / Enums
```tuan
// 基本枚举 / Basic enum
枚举 星期 {
星期一,
星期二,
星期三,
星期四,
星期五,
星期六,
星期日
}
enum Weekday {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
今天 = 星期.星期一
today = Weekday.Monday
如果 今天 == 星期.星期六 或 今天 == 星期.星期日 {
输出("周末愉快!")
}
if today == Weekday.Saturday or today == Weekday.Sunday {
print("Happy weekend!")
}
// 带值的枚举 / Enum with values
枚举 HTTP状态码 {
成功 = 200,
创建成功 = 201,
错误请求 = 400,
未授权 = 401,
未找到 = 404,
服务器错误 = 500
}
enum HTTPStatusCode {
OK = 200,
Created = 201,
BadRequest = 400,
Unauthorized = 401,
NotFound = 404,
ServerError = 500
}
状态 = HTTP状态码.成功
status = HTTPStatusCode.OK
输出(状态.值()) // 200
print(status.value()) // 200
输出(状态.名称()) // "成功"
print(status.name()) // "OK"
// 枚举方法 / Enum methods
枚举 颜色 {
红,
绿,
蓝;
函数 十六进制值(): 字符串 {
匹配 本 {
情况 红: 返回 "#FF0000"
情况 绿: 返回 "#00FF00"
情况 蓝: 返回 "#0000FF"
}
}
}
enum Color {
Red,
Green,
Blue;
function hex_value(): string {
match self {
case Red: return "#FF0000"
case Green: return "#00FF00"
case Blue: return "#0000FF"
}
}
}
```
---
📊 七、泛型编程 / Generic Programming
泛型类 / Generic Class
```tuan
// 泛型容器 / Generic container
类 盒子<T> {
私有 内容: T
构造(内容: T) {
本.内容 = 内容
}
函数 获取内容(): T {
返回 本.内容
}
函数 设置内容(新内容: T) {
本.内容 = 新内容
}
}
class Box<T> {
private content: T
constructor(content: T) {
self.content = content
}
function get_content(): T {
return self.content
}
function set_content(new_content: T) {
self.content = new_content
}
}
// 使用 / Usage
整数盒子 = 盒子<整数>(42)
int_box = Box<int>(42)
字符串盒子 = 盒子<字符串>("Hello")
string_box = Box<string>("Hello")
输出(整数盒子.获取内容()) // 42
print(int_box.get_content()) // 42
输出(字符串盒子.获取内容()) // "Hello"
print(string_box.get_content()) // "Hello"
```
泛型函数 / Generic Functions
```tuan
// 泛型函数 / Generic function
函数 交换<T>(a: 引用 T, b: 引用 T): 空 {
临时 = a
a = b
b = 临时
}
function swap<T>(a: ref T, b: ref T): null {
temp = a
a = b
b = temp
}
// 使用 / Usage
x = 10
y = 20
交换(x, y)
swap(x, y)
输出("x: {x}, y: {y}") // x: 20, y: 10
print("x: {x}, y: {y}") // x: 20, y: 10
// 泛型约束 / Generic constraints
接口 可比较<T> {
函数 比较(其他: T): 整数
}
interface Comparable<T> {
function compare(other: T): int
}
函数 最大值<T 实现 可比较<T>>(a: T, b: T): T {
如果 a.比较(b) > 0 {
返回 a
} 否则 {
返回 b
}
}
function max<T implements Comparable<T>>(a: T, b: T): T {
if a.compare(b) > 0 {
return a
} else {
return b
}
}
```
---
🚀 八、错误处理 / Error Handling
异常处理 / Exception Handling
```tuan
// 抛出异常 / Throw exception
函数 安全除法(被除数: 小数, 除数: 小数): 小数 {
如果 除数 == 0 {
抛出 异常("除数不能为零")
}
返回 被除数 / 除数
}
function safe_divide(dividend: float, divisor: float): float {
if divisor == 0 {
throw Exception("Divisor cannot be zero")
}
return dividend / divisor
}
// 捕获异常 / Catch exception
尝试 {
结果 = 安全除法(10, 0)
输出("结果: {结果}")
} 捕获 数学异常: 异常 {
输出("数学错误: {数学异常.消息}")
} 捕获 其他异常: 异常 {
输出("其他错误: {其他异常.消息}")
} 最终 {
输出("计算完成")
}
try {
result = safe_divide(10, 0)
print("Result: {result}")
} catch math_error: Exception {
print("Math error: {math_error.message}")
} catch other_error: Exception {
print("Other error: {other_error.message}")
} finally {
print("Calculation completed")
}
// 自定义异常 / Custom exception
类 文件未找到异常 继承 异常 {
构造(文件名: 字符串) {
本.父构造("文件 '{文件名}' 未找到")
}
}
class FileNotFoundException extends Exception {
constructor(filename: string) {
super("File '{filename}' not found")
}
}
// 结果类型(函数式错误处理)/ Result type (functional error handling)
类 结果<T, E> {
私有 值: T | 空
私有 错误: E | 空
私有 构造(值: T | 空, 错误: E | 空) {
本.值 = 值
本.错误 = 错误
}
静态 函数 成功(值: T): 结果<T, E> {
返回 结果<T, E>(值, 空)
}
静态 函数 失败(错误: E): 结果<T, E> {
返回 结果<T, E>(空, 错误)
}
函数 是成功(): 布尔 {
返回 本.值 != 空
}
函数 是失败(): 布尔 {
返回 本.错误 != 空
}
函数 解包(): T {
如果 本.值 != 空 {
返回 本.值!
} 否则 {
抛出 异常("尝试解包失败的结果")
}
}
函数 获取错误(): E {
如果 本.错误 != 空 {
返回 本.错误!
} 否则 {
抛出 异常("没有错误")
}
}
}
```
---
⚡ 九、并发编程 / Concurrency
异步/等待 / Async/Await
```tuan
// 异步函数 / Async function
异步 函数 获取数据(网址: 字符串): 字符串 {
输出("开始获取 {网址}")
// 模拟网络延迟 / Simulate network delay
等待 时间.睡眠(1000) // 等待1秒 / Wait 1 second
返回 "来自 {网址} 的数据"
}
async function fetch_data(url: string): string {
print("Starting to fetch {url}")
// Simulate network delay
await time.sleep(1000) // Wait 1 second
return "Data from {url}"
}
// 使用异步函数 / Using async function
异步 函数 主函数() {
数据1 = 等待 获取数据("https://api.example.com/data1")
数据2 = 等待 获取数据("https://api.example.com/data2")
输出("数据1: {数据1}")
输出("数据2: {数据2}")
返回 "完成"
}
async function main() {
data1 = await fetch_data("https://api.example.com/data1")
data2 = await fetch_data("https://api.example.com/data2")
print("Data1: {data1}")
print("Data2: {data2}")
return "Done"
}
// 并发执行 / Concurrent execution
异步 函数 并发获取() {
任务1 = 获取数据("https://api.example.com/data1")
任务2 = 获取数据("https://api.example.com/data2")
// 等待所有任务完成 / Wait for all tasks to complete
(结果1, 结果2) = 等待 任务.所有([任务1, 任务2])
输出("结果1: {结果1}")
输出("结果2: {结果2}")
}
async function concurrent_fetch() {
task1 = fetch_data("https://api.example.com/data1")
task2 = fetch_data("https://api.example.com/data2")
// Wait for all tasks to complete
(result1, result2) = await Task.all([task1, task2])
print("Result1: {result1}")
print("Result2: {result2}")
}
```
协程 / Coroutines
```tuan
// 生成器函数 / Generator function
函数 数字生成器(最大值: 整数): 生成器<整数> {
对于 i 在 1..最大值 {
生成 i
}
}
function number_generator(max: int): generator<int> {
for i in 1..max {
yield i
}
}
// 使用生成器 / Using generator
对于 数字 在 数字生成器(5) {
输出(数字) // 1, 2, 3, 4, 5
}
for number in number_generator(5) {
print(number) // 1, 2, 3, 4, 5
}
// 协程通信 / Coroutine communication
函数 生产者(通道: 通道<整数>) {
对于 i 在 1..5 {
输出("生产: {i}")
通道.发送(i)
时间.睡眠(500)
}
通道.关闭()
}
function producer(channel: channel<int>) {
for i in 1..5 {
print("Produce: {i}")
channel.send(i)
time.sleep(500)
}
channel.close()
}
函数 消费者(通道: 通道<整数>) {
对于 项目 在 通道 {
输出("消费: {项目}")
时间.睡眠(1000)
}
}
function consumer(channel: channel<int>) {
for item in channel {
print("Consume: {item}")
time.sleep(1000)
}
}
// 启动协程 / Start coroutines
通道 = 通道<整数>(容量: 3)
channel = channel<int>(capacity: 3)
协程.启动(生产者(通道))
coroutine.start(producer(channel))
协程.启动(消费者(通道))
coroutine.start(consumer(channel))
```
线程安全 / Thread Safety
```tuan
// 互斥锁 / Mutex
类 线程安全计数器 {
私有 计数: 整数 = 0
私有 锁: 互斥锁 = 互斥锁()
函数 增加() {
锁.锁定()
尝试 {
计数 = 计数 + 1
} 最终 {
锁.解锁()
}
}
函数 获取(): 整数 {
锁.锁定()
尝试 {
返回 计数
} 最终 {
锁.解锁()
}
}
}
class ThreadSafeCounter {
private count: int = 0
private lock: mutex = mutex()
function increment() {
lock.lock()
try {
count = count + 1
} finally {
lock.unlock()
}
}
function get(): int {
lock.lock()
try {
return count
} finally {
lock.unlock()
}
}
}
// 原子操作 / Atomic operations
原子整数 = 原子<整数>(0)
atomic_int = atomic<int>(0)
原子整数.增加获取() // 原子增加并返回新值
atomic_int.increment_and_get() // Atomically increment and return new value
原子整数.获取增加() // 获取当前值然后增加
atomic_int.get_and_increment() // Get current value then increment
```
---
📚 十、标准库 / Standard Library
输入输出 / Input/Output
```tuan
// 控制台输入输出 / Console I/O
输出("请输入你的名字:")
print("Please enter your name: ")
名字 = 输入() // 读取一行输入
name = input() // Read a line of input
输出("你好,{名字}!")
print("Hello, {name}!")
// 格式化输出 / Formatted output
价格 = 99.99
price = 99.99
数量 = 3
quantity = 3
总价 = 价格 * 数量
total = price * quantity
输出("价格: {价格:0.2f}, 数量: {数量}, 总价: {总价:0.2f}")
print("Price: {price:0.2f}, Quantity: {quantity}, Total: {total:0.2f}")
// 文件操作 / File operations
内容 = "Hello, Tuan!"
content = "Hello, Tuan!"
文件.写入文本("test.txt", 内容)
file.write_text("test.txt", content)
读取内容 = 文件.读取文本("test.txt")
read_content = file.read_text("test.txt")
输出(读取内容)
print(read_content)
// 目录操作 / Directory operations
如果 目录.存在("data") {
输出("目录已存在")
} 否则 {
目录.创建("data")
}
if directory.exists("data") {
print("Directory exists")
} else {
directory.create("data")
}
文件列表 = 目录.列表文件(".")
file_list = directory.list_files(".")
对于 文件 在 文件列表 {
输出(文件.名称())
}
for file in file_list {
print(file.name())
}
```
数学函数 / Math Functions
```tuan
导入 数学
import math
绝对值 = 数学.绝对值(-10) // 10
abs_value = math.abs(-10) // 10
平方根 = 数学.平方根(16) // 4.0
sqrt_value = math.sqrt(16) // 4.0
正弦值 = 数学.正弦(数学.PI / 2) // 1.0
sin_value = math.sin(math.PI / 2) // 1.0
自然对数 = 数学.对数(数学.E) // 1.0
ln_value = math.log(math.E) // 1.0
常用对数 = 数学.对数10(100) // 2.0
log10_value = math.log10(100) // 2.0
幂运算 = 数学.幂(2, 3) // 8.0
pow_value = math.pow(2, 3) // 8.0
四舍五入 = 数学.四舍五入(3.14159, 2) // 3.14
round_value = math.round(3.14159, 2) // 3.14
向下取整 = 数学.向下取整(3.9) // 3
floor_value = math.floor(3.9) // 3
向上取整 = 数学.向上取整(3.1) // 4
ceil_value = math.ceil(3.1) // 4
// 随机数 / Random numbers
随机种子 = 随机.种子(42)
random.seed(42)
随机整数 = 随机.整数(1, 100)
random_int = random.int(1, 100)
随机小数 = 随机.小数()
random_float = random.float()
随机选择 = 随机.选择(["A", "B", "C"])
random_choice = random.choice(["A", "B", "C"])
```
日期时间 / Date & Time
```tuan
导入 时间
import time
现在 = 时间.现在()
now = time.now()
输出("当前时间: {现在}")
print("Current time: {now}")
年 = 现在.年()
year = now.year()
月 = 现在.月()
month = now.month()
日 = 现在.日()
day = now.day()
时 = 现在.时()
hour = now.hour()
分 = 现在.分()
minute = now.minute()
秒 = 现在.秒()
second = now.second()
// 格式化 / Formatting
格式化时间 = 现在.格式化("YYYY-MM-DD HH:mm:ss")
formatted_time = now.format("YYYY-MM-DD HH:mm:ss")
输出(格式化时间) // "2024-01-15 14:30:25"
print(formatted_time) // "2024-01-15 14:30:25"
// 时间计算 / Time calculations
明天 = 现在 + 时间.时长(天数: 1)
tomorrow = now + time.duration(days: 1)
一周后 = 现在 + 时间.时长(星期: 1)
one_week_later = now + time.duration(weeks: 1)
一小时前 = 现在 - 时间.时长(小时: 1)
one_hour_ago = now - time.duration(hours: 1)
// 解析时间 / Parse time
解析时间 = 时间.解析("2024-01-15", "YYYY-MM-DD")
parsed_time = time.parse("2024-01-15", "YYYY-MM-DD")
```
网络请求 / Network Requests
```tuan
导入 网络
import network
// HTTP GET请求 / HTTP GET request
响应 = 网络.HTTP.获取("https://api.example.com/data")
response = network.HTTP.get("https://api.example.com/data")
如果 响应.状态码 == 200 {
数据 = 响应.正文.转字符串()
输出("获取到数据: {数据}")
} 否则 {
输出("请求失败: {响应.状态码}")
}
if response.status_code == 200 {
data = response.body.to_string()
print("Got data: {data}")
} else {
print("Request failed: {response.status_code}")
}
// HTTP POST请求 / HTTP POST request
数据 = {
"姓名": "张三",
"年龄": 25
}
data = {
"name": "Zhang San",
"age": 25
}
响应 = 网络.HTTP.发布("https://api.example.com/users", JSON.序列化(数据))
response = network.HTTP.post("https://api.example.com/users", JSON.serialize(data))
// WebSocket
套接字 = 网络.WebSocket.连接("ws://example.com/socket")
socket = network.WebSocket.connect("ws://example.com/socket")
套接字.发送("Hello, Server!")
socket.send("Hello, Server!")
消息 = 套接字.接收()
message = socket.receive()
套接字.关闭()
socket.close()
```
---
🔧 十一、模块系统 / Module System
模块定义 / Module Definition
```tuan
// 文件: math_utils.tuan / File: math_utils.tuan
模块 数学工具
module math_utils
// 导出函数 / Export functions
公开 函数 加法(a: 小数, b: 小数): 小数 {
返回 a + b
}
public function add(a: float, b: float): float {
return a + b
}
公开 函数 乘法(a: 小数, b: 小数): 小数 {
返回 a * b
}
public function multiply(a: float, b: float): float {
return a * b
}
// 内部函数(不导出)/ Internal function (not exported)
私有 函数 内部计算(): 整数 {
返回 42
}
private function internal_compute(): int {
return 42
}
// 导出类 / Export class
公开 类 计算器 {
函数 计算表达式(表达式: 字符串): 小数 {
// 实现... / Implementation...
返回 0.0
return 0.0
}
}
public class Calculator {
function compute_expression(expression: string): float {
// Implementation...
return 0.0
}
}
```
模块导入 / Module Import
```tuan
// 导入整个模块 / Import entire module
导入 数学工具
import math_utils
结果1 = 数学工具.加法(3, 5)
result1 = math_utils.add(3, 5)
结果2 = 数学工具.乘法(4, 6)
result2 = math_utils.multiply(4, 6)
// 导入特定项目 / Import specific items
从 数学工具 导入 {加法, 计算器}
from math_utils import {add, Calculator}
结果 = 加法(2, 3)
result = add(2, 3)
计算器实例 = 计算器()
calculator = Calculator()
// 别名导入 / Alias import
导入 数学工具 作为 工具
import math_utils as utils
结果 = 工具.乘法(3, 4)
result = utils.multiply(3, 4)
// 条件导入 / Conditional import
如果 系统.平台() == "windows" {
导入 windows工具
} 否则 {
导入 unix工具
}
if system.platform() == "windows" {
import windows_utils
} else {
import unix_utils
}
// 动态导入 / Dynamic import
模块路径 = "my_module.tuan"
module_path = "my_module.tuan"
动态模块 = 导入(模块路径)
dynamic_module = import(module_path)
```
---
📦 十二、包管理 / Package Management
包定义 / Package Definition
```tuan
// 文件: my_package/package.tuan / File: my_package/package.tuan
包 {
名称: "my_package",
版本: "1.0.0",
作者: "Tuan开发者",
描述: "我的Tuan包",
许可证: "MIT",
依赖: {
"tuan_http": ">=1.2.0",
"tuan_json": ">=2.0.0"
},
入口点: "src/main.tuan"
}
package {
name: "my_package",
version: "1.0.0",
author: "Tuan Developer",
description: "My Tuan package",
license: "MIT",
dependencies: {
"tuan_http": ">=1.2.0",
"tuan_json": ">=2.0.0"
},
entry_point: "src/main.tuan"
}
```
包结构 / Package Structure
```
my_package/
├── package.tuan # 包定义文件 / Package definition
├── README.md # 说明文档 / Documentation
├── src/ # 源代码 / Source code
│ ├── main.tuan # 主入口 / Main entry point
│ ├── utils.tuan # 工具模块 / Utility module
│ └── lib/ # 库文件 / Library files
├── tests/ # 测试文件 / Test files
├── examples/ # 示例代码 / Example code
└── docs/ # 文档 / Documentation
```
包管理器命令 / Package Manager Commands
```bash
# 初始化新包 / Initialize new package
tuan init my_package
# 添加依赖 / Add dependency
tuan add tuan_http
# 安装依赖 / Install dependencies
tuan install
# 运行程序 / Run program
tuan run
# 构建发布版本 / Build release version
tuan build --release
# 测试 / Test
tuan test
# 发布到包仓库 / Publish to package registry
tuan publish
```
---
🎯 十三、实战项目:学生管理系统 / Practical Project: Student Management System
完整代码 / Complete Code
```tuan
// 文件: student_management.tuan / File: student_management.tuan
// 学生类 / Student class
类 学生 {
// 属性 / Properties
私有 学号: 字符串
private student_id: string
私有 姓名: 字符串
private name: string
私有 年龄: 整数
private age: int
私有 成绩: 字典<字符串, 小数>
private grades: dict<string, float>
// 构造函数 / Constructor
构造(学号: 字符串, 姓名: 字符串, 年龄: 整数) {
本.学号 = 学号
本.姓名 = 姓名
本.年龄 = 年龄
本.成绩 = 字典<字符串, 小数>()
}
constructor(student_id: string, name: string, age: int) {
self.student_id = student_id
self.name = name
self.age = age
self.grades = dict<string, float>()
}
// 公共方法 / Public methods
公开 函数 获取学号(): 字符串 { 返回 本.学号 }
public function get_student_id(): string { return self.student_id }
公开 函数 获取姓名(): 字符串 { 返回 本.姓名 }
public function get_name(): string { return self.name }
公开 函数 获取年龄(): 整数 { 返回 本.年龄 }
public function get_age(): int { return self.age }
公开 函数 添加成绩(科目: 字符串, 分数: 小数): 空 {
如果 分数 >= 0 且 分数 <= 100 {
本.成绩[科目] = 分数
} 否则 {
抛出 异常("分数必须在0-100之间")
}
}
public function add_grade(subject: string, score: float): null {
if score >= 0 and score <= 100 {
self.grades[subject] = score
} else {
throw Exception("Score must be between 0 and 100")
}
}
公开 函数 获取成绩(科目: 字符串): 小数 | 空 {
返回 本.成绩.获取(科目, 空)
}
public function get_grade(subject: string): float | null {
return self.grades.get(subject, null)
}
公开 函数 获取平均分(): 小数 {
如果 本.成绩.长度() == 0 {
返回 0.0
}
总分 = 0.0
total_score = 0.0
对于 分数 在 本.成绩.值() {
总分 = 总分 + 分数
total_score = total_score + score
}
返回 总分 / 本.成绩.长度()
return total_score / self.grades.length()
}
公开 函数 获取等级(): 字符串 {
平均分 = 本.获取平均分()
average = self.get_average()
匹配 {
情况 如果 平均分 >= 90: 返回 "A"
情况 如果 平均分 >= 80: 返回 "B"
情况 如果 平均分 >= 70: 返回 "C"
情况 如果 平均分 >= 60: 返回 "D"
否则: 返回 "F"
}
match {
case if average >= 90: return "A"
case if average >= 80: return "B"
case if average >= 70: return "C"
case if average >= 60: return "D"
else: return "F"
}
}
公开 覆盖 函数 转字符串(): 字符串 {
返回 "学生{学号: {本.学号}, 姓名: {本.姓名}, 年龄: {本.年龄}, 平均分: {本.获取平均分():.1f}}"
}
public override function to_string(): string {
return "Student{ID: {self.student_id}, Name: {self.name}, Age: {self.age}, Average: {self.get_average():.1f}}"
}
}
// 学生管理器 / Student manager
类 学生管理器 {
私有 学生列表: 字典<字符串, 学生> = 字典<字符串, 学生>()
private students: dict<string, Student> = dict<string, Student>()
公开 函数 添加学生(学生: 学生): 布尔 {
如果 本.学生列表.包含键(学生.获取学号()) {
输出("学生 {学生.获取学号()} 已存在")
返回 假
}
本.学生列表[学生.获取学号()] = 学生
输出("学生 {学生.获取姓名()} 添加成功")
返回 真
}
public function add_student(student: Student): bool {
if self.students.contains_key(student.get_student_id()) {
print("Student {student.get_student_id()} already exists")
return false
}
self.students[student.get_student_id()] = student
print("Student {student.get_name()} added successfully")
return true
}
公开 函数 删除学生(学号: 字符串): 布尔 {
如果 本.学生列表.移除(学号) != 空 {
输出("学生 {学号} 删除成功")
返回 真
} 否则 {
输出("学生 {学号} 不存在")
返回 假
}
}
public function remove_student(student_id: string): bool {
if self.students.remove(student_id) != null {
print("Student {student_id} removed successfully")
return true
} else {
print("Student {student_id} does not exist")
return false
}
}
公开 函数 查找学生(学号: 字符串): 学生 | 空 {
返回 本.学生列表.获取(学号, 空)
}
public function find_student(student_id: string): Student | null {
return self.students.get(student_id, null)
}
公开 函数 获取所有学生(): 列表<学生> {
返回 列表<学生>(本.学生列表.值())
}
public function get_all_students(): list<Student> {
return list<Student>(self.students.values())
}
公开 函数 按成绩排序(): 列表<学生> {
学生列表 = 本.获取所有学生()
返回 学生列表.排序((a, b) => b.获取平均分() - a.获取平均分())
}
public function sort_by_grade(): list<Student> {
student_list = self.get_all_students()
return student_list.sort((a, b) => b.get_average() - a.get_average())
}
公开 函数 生成报告(): 字典<字符串, 任意类型> {
总人数 = 本.学生列表.长度()
total_students = self.students.length()
如果 总人数 == 0 {
返回 {
"总人数": 0,
"平均分": 0.0,
"最高分": 0.0,
"最低分": 0.0
}
return {
"total_students": 0,
"average_score": 0.0,
"highest_score": 0.0,
"lowest_score": 0.0
}
}
总分 = 0.0
total_score = 0.0
最高分 = 0.0
highest_score = 0.0
最低分 = 100.0
lowest_score = 100.0
对于 学生 在 本.学生列表.值() {
平均分 = 学生.获取平均分()
average = student.get_average()
总分 = 总分 + 平均分
total_score = total_score + average
如果 平均分 > 最高分 {
最高分 = 平均分
}
if average > highest_score {
highest_score = average
}
如果 平均分 < 最低分 {
最低分 = 平均分
}
if average < lowest_score {
lowest_score = average
}
}
平均分 = 总分 / 总人数
overall_average = total_score / total_students
返回 {
"总人数": 总人数,
"平均分": 平均分,
"最高分": 最高分,
"最低分": 最低分,
"优秀率": (本._计算等级比例("A") / 总人数) * 100
}
return {
"total_students": total_students,
"average_score": overall_average,
"highest_score": highest_score,
"lowest_score": lowest_score,
"excellent_rate": (self._calculate_grade_ratio("A") / total_students) * 100
}
}
私有 函数 _计算等级比例(等级: 字符串): 整数 {
计数 = 0
count = 0
对于 学生 在 本.学生列表.值() {
如果 学生.获取等级() == 等级 {
计数 = 计数 + 1
}
if student.get_grade() == grade {
count = count + 1
}
}
返回 计数
return count
}
private function _calculate_grade_ratio(grade: string): int {
count = 0
for student in self.students.values() {
if student.get_grade() == grade {
count = count + 1
}
}
return count
}
}
// 主程序 / Main program
函数 主() {
输出("🎓 学生管理系统")
print("🎓 Student Management System")
输出("=" * 30)
print("=" * 30)
管理器 = 学生管理器()
manager = StudentManager()
// 添加测试数据 / Add test data
学生1 = 学生("2024001", "张三", 20)
student1 = Student("2024001", "Zhang San", 20)
学生1.添加成绩("数学", 95.5)
student1.add_grade("Math", 95.5)
学生1.添加成绩("英语", 88.0)
student1.add_grade("English", 88.0)
学生1.添加成绩("编程", 92.0)
student1.add_grade("Programming", 92.0)
学生2 = 学生("2024002", "李四", 21)
student2 = Student("2024002", "Li Si", 21)
学生2.添加成绩("数学", 85.0)
student2.add_grade("Math", 85.0)
学生2.添加成绩("英语", 90.5)
student2.add_grade("English", 90.5)
学生2.添加成绩("编程", 78.5)
student2.add_grade("Programming", 78.5)
学生3 = 学生("2024003", "王五", 19)
student3 = Student("2024003", "Wang Wu", 19)
学生3.添加成绩("数学", 76.0)
student3.add_grade("Math", 76.0)
学生3.添加成绩("英语", 82.5)
student3.add_grade("English", 82.5)
学生3.添加成绩("编程", 88.0)
student3.add_grade("Programming", 88.0)
管理器.添加学生(学生1)
manager.add_student(student1)
管理器.添加学生(学生2)
manager.add_student(student2)
管理器.添加学生(学生3)
manager.add_student(student3)
// 显示所有学生 / Display all students
输出("\n👥 所有学生:")
print("\n👥 All Students:")
对于 学生 在 管理器.获取所有学生() {
输出(" - {学生}")
}
for student in manager.get_all_students() {
print(" - {student}")
}
// 按成绩排序 / Sort by grade
输出("\n🏆 按成绩排序:")
print("\n🏆 Sorted by Grade:")
对于 学生 在 管理器.按成绩排序() {
输出(" - {学生.获取姓名()}: {学生.获取平均分():.1f} ({学生.获取等级()})")
}
for student in manager.sort_by_grade() {
print(" - {student.get_name()}: {student.get_average():.1f} ({student.get_grade()})")
}
// 生成报告 / Generate report
报告 = 管理器.生成报告()
report = manager.generate_report()
输出("\n📊 系统报告:")
print("\n📊 System Report:")
输出(" 总人数: {报告["总人数"]}")
print(" Total Students: {report['total_students']}")
输出(" 平均分: {报告["平均分"]:.1f}")
print(" Average Score: {report['average_score']:.1f}")
输出(" 最高分: {报告["最高分"]:.1f}")
print(" Highest Score: {report['highest_score']:.1f}")
输出(" 最低分: {报告["最低分"]:.1f}")
print(" Lowest Score: {report['lowest_score']:.1f}")
输出(" 优秀率: {报告["优秀率"]:.1f}%")
print(" Excellent Rate: {report['excellent_rate']:.1f}%")
// 查找学生 / Find student
输出("\n🔍 查找学生:")
print("\n🔍 Find Student:")
找到学生 = 管理器.查找学生("2024001")
found_student = manager.find_student("2024001")
如果 找到学生 != 空 {
输出(" 找到: {找到学生.获取姓名()}")
输出(" 成绩单:")
对于 (科目, 分数) 在 [(科目, 分数) 对于 科目, 分数 在 找到学生.成绩.条目()] {
输出(" {科目}: {分数}")
}
}
if found_student != null {
print(" Found: {found_student.get_name()}")
print(" Grade Report:")
for (subject, score) in [(subject, score) for subject, score in found_student.grades.entries()] {
print(" {subject}: {score}")
}
}
输出("\n✅ 程序执行完成")
print("\n✅ Program execution completed")
}
// 运行主程序 / Run main program
如果 __文件名__ == "__主__" {
主()
}
if __filename__ == "__main__" {
main()
}
```
---
📚 十四、学习资源 / Learning Resources
快速入门 / Quick Start
```tuan
// 1. 安装Tuan / Install Tuan
# 从官网下载安装包
# Download from official website
# https://tuan-lang.org
// 2. 第一个程序 / First program
输出("你好,Tuan!")
print("Hello, Tuan!")
// 3. 运行程序 / Run program
# tuan run hello.tuan
// 4. 交互式环境 / Interactive environment
# tuan repl
> 1 + 2
3
> 输出("Hello")
Hello
```
官方文档结构 / Official Documentation Structure
```
📚 Tuan官方文档 / Tuan Official Documentation
├── 快速开始 / Getting Started
├── 语言教程 / Language Tutorial
├── 标准库参考 / Standard Library Reference
├── 包管理指南 / Package Management Guide
├── 最佳实践 / Best Practices
└── 进阶主题 / Advanced Topics
```
社区资源 / Community Resources
· 官网 / Website: https://tuan-lang.org
· GitHub: https://github.com/tuan-lang
· 论坛 / Forum: https://forum.tuan-lang.org
· 包仓库 / Package Registry: https://packages.tuan-lang.org
---
🎉 总结 / Conclusion
特色功能 / Key Features
1. 中文友好的语法,同时支持英文关键字
Chinese-friendly syntax, also supports English keywords
2. 强大的类型系统,静态类型+类型推断
Powerful type system, static typing + type inference
3. 现代化的错误处理,异常+结果类型
Modern error handling, exceptions + result types
4. 内置并发支持,异步/等待+协程
Built-in concurrency support, async/await + coroutines
5. 丰富的标准库,覆盖常用开发需求
Rich standard library, covers common development needs
6. 完善的包管理器,依赖管理简单
Complete package manager, simple dependency management
适用场景 / Use Cases
· Web开发:前后端开发,API服务
Web Development: Frontend/backend, API services
· 数据科学:数据分析,机器学习
Data Science: Data analysis, machine learning
· 系统编程:操作系统,嵌入式开发
Systems Programming: OS, embedded development
· 教育领域:编程教学,算法学习
Education: Programming teaching, algorithm learning
· 脚本工具:自动化脚本,系统管理
Scripting: Automation scripts, system administration
Tuan语言旨在提供一种既强大又易用的编程体验,让开发者能够专注于解决问题,而不是语言本身的复杂性。
Tuan aims to provide a programming experience that is both powerful and easy to use, allowing developers to focus on solving problems rather than the complexity of the language itself.
更多推荐
所有评论(0)