Support var

This commit is contained in:
2026-01-19 22:07:25 +08:00
parent 57def6137b
commit 0833a2229b
6 changed files with 93 additions and 55 deletions

View File

@@ -7,7 +7,7 @@
- **0-based 索引**:数组和列表从 0 开始索引
- **明确的类型系统**:区分 list 和 map
- **类支持**:支持 class 定义,包含字段和方法
- **静态类型声明**变量需要类型声明number, string, bool, list, map
- **类型推断**:使用 `var` 关键字自动推断变量类型,也支持显式类型注解
- **类 Lua 的 API**:提供简单的嵌入式 API
## 语法示例
@@ -15,15 +15,21 @@
### 基本类型
```javascript
number x = 10;
string name = "Alice";
bool flag = true;
// 类型自动推断
var x = 10;
var name = "Alice";
var flag = true;
// 显式类型声明
var y : number = 3.14;
var title : string = "Developer";
var active : bool = false;
```
### List0-indexed
```javascript
list numbers = [10, 20, 30];
var numbers = [10, 20, 30]; // 自动推断为 list
print(numbers[0]); // 输出: 10
numbers[1] = 99;
```
@@ -31,7 +37,7 @@ numbers[1] = 99;
### Map
```javascript
map person = {"name": "Bob", "age": "25"};
var person = {"name": "Bob", "age": "25"}; // 自动推断为 map
print(person["name"]); // 输出: Bob
person["city"] = "New York";
```
@@ -43,15 +49,15 @@ func add(number a, number b) -> number {
return a + b;
}
number result = add(10, 20);
var result = add(10, 20); // 自动推断返回值类型
```
### 类
```javascript
class Person {
number age;
string name;
var age : number; // 类成员必须显式声明类型
var name : string;
func sayHi() -> string {
print(name, "says: I'm", age, "years old");
@@ -59,7 +65,7 @@ class Person {
}
}
Person p;
var p : Person; // 实例化类
p.age = 10;
p.name = "Peter";
p.sayHi();
@@ -76,14 +82,14 @@ if (x > 10) {
}
// while loop
number i = 0;
var i = 0;
while (i < 5) {
print("Count:", i);
i = i + 1;
}
// for loop
for (number j = 0; j < 3; j = j + 1) {
for (var j = 0; j < 3; j = j + 1) {
print("For loop:", j);
}
```
@@ -117,8 +123,8 @@ int main() {
// 执行脚本字符串
const char* script = R"(
class Person {
number age;
string name;
var age : number;
var name : string;
func sayHi() -> string {
print(name, "says: I'm", age, "years old");
@@ -126,7 +132,7 @@ int main() {
}
}
Person p;
var p : Person;
p.age = 10;
p.name = "Peter";
p.sayHi();
@@ -203,10 +209,10 @@ camellya/
|------|-----|----------|
| 索引起始 | 1 | 0 |
| Table | 统一的 table | 区分 list 和 map |
| 类型 | 动态 | 静态声明 |
| 类型 | 动态 | 类型推断 + 可选类型注解 |
| 类 | 通过 metatable | 原生支持 |
| 语法 | `function` | `func` |
| 类型注解 | 无 | 必须声明 |
| 变量声明 | 无需声明 | `var` 关键字 |
## 许可证