Skip to content

Commit

Permalink
Update VDSL_CN.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Safe3 committed Dec 24, 2023
1 parent e31e04e commit b836967
Showing 1 changed file with 12 additions and 12 deletions.
24 changes: 12 additions & 12 deletions VDSL_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ if is_error(err1) { // 'is_error' builtin function

### Const 值

在VDSL中,基本上所有的值除了数组和映射都是常量。
在VDSL中,基本上所有的值(除了数组和映射)都是常量。

```golang
s := "12345"
Expand All @@ -79,7 +79,7 @@ a := const([1, 2, 3])
a = false // ok
```

请注意,如果复制使用“copy”内置函数常量值将返回一个“可变”副本。此外,不变性不适用于数组或映射值的各个元素,除非它们是显式生成的常量。
请注意,如果复制(使用“copy”内置函数)常量值将返回一个“可变”副本。此外,不变性不适用于数组或映射值的各个元素,除非它们是显式生成的常量。

```golang
a := const({b: 4, c: [1, 2, 3]})
Expand Down Expand Up @@ -207,7 +207,7 @@ f2([1, 2, 3]...) // valid; a = 1, b = [2, 3]
- `:=`运算符在作用域中定义一个新变量并赋值。
- `=`运算符为作用域中的现有变量分配一个新值。

变量在全局范围在函数外部定义或本地范围在功能内部定义中定义。
变量在全局范围(在函数外部定义)或本地范围(在功能内部定义)中定义。

```golang
a := "foo" // define 'a' in global scope
Expand Down Expand Up @@ -286,17 +286,17 @@ c5 := char("X") // 'X'
| `&` | 按位与运算符 | int |
| `\|` | 按位或运算符 | int |
| `^` | 按位异或运算符 | int |
| `&^` | 位清除AND NOT | int |
| `&^` | 位清除(AND NOT) | int |
| `<<` | 左移运算符 | int |
| `>>` | 右移运算符 | int |
| `<` | 检查左边值是否小于右边值 | int, float, char, time, string |
| `<=` | 检查左边值是否小于等于右边值 | int, float, char, time, string |
| `>` | 检查左边值是否大于右边值 | int, float, char, time, string |
| `>=` | 检查左边值是否大于等于右边值 | int, float, char, time, string |

### 三目操作符
### 三元运算符

VDSL有一个三元条件运算符`条件表达式)?(true表达式):(false表达式`
VDSL有一个三元条件运算符`(条件表达式)?(true表达式):(false表达式)`

```golang
a := true ? 1 : -1 // a == 1
Expand Down Expand Up @@ -329,7 +329,7 @@ b := min(5, 10) // b == 5

一元运算符具有最高优先级,三元运算符具有最低优先级。二进制运算符有五个优先级。

乘法运算符绑定最强,其次是加法运算符,比较运算符,“&&”逻辑AND,最后是“||”逻辑OR
乘法运算符绑定最强,其次是加法运算符,比较运算符,“&&”(逻辑AND),最后是“||”(逻辑OR)

| 优先级 | 操作符 |
| :---: | :---: |
Expand All @@ -343,7 +343,7 @@ b := min(5, 10) // b == 5

### 选择器和索引器

可以使用选择器`.`和索引器`[]`运算符来读取或写入复合类型数组、映射、字符串、字节的元素。
可以使用选择器(`.`)和索引器(`[]`)运算符来读取或写入复合类型(数组、映射、字符串、字节)的元素。

```golang
["one", "two", "three"][1] // == "two"
Expand Down Expand Up @@ -436,7 +436,7 @@ for {

VDSL中新增了“For In”语句。它类似于Go的“for range”语句。

“For In”语句可以迭代任何可迭代的值类型数组、映射、字节、字符串、nil
“For In”语句可以迭代任何可迭代的值类型(数组、映射、字节、字符串、nil)

```golang
for v in [1, 2, 3] { // array: element
Expand Down Expand Up @@ -474,7 +474,7 @@ export func(x) {
```

默认情况下,“import”将模块文件缺少的扩展名解决为"`.dsl`"[^note]
因此,“sum:=import"./sum"”相当于“sum:=import"./sum.dsl"”。
因此,“sum:=import("./sum")”相当于“sum:=import("./sum.dsl")”。

[^note]:
如果在Go中使用VDSL作为库,则可以自定义文件扩展名“`.dsl`”。在这种情况下,请使用“Compiler”类型的“SetImportFileExt”函数。
Expand All @@ -486,7 +486,7 @@ export func(x) {
- 模块可以返回“导出”任何类型的值:int、map、function等。
- 模块中的export类似于函数中的return:它停止执行并导入代码返回一个值。
- `export`的值总是常量。
- 如果模块没有任何“export”语句,则“import”表达式只返回“nil”_就像没有“return”的函数一样。_
- 如果模块没有任何“export”语句,则“import”表达式只返回“nil”_(就像没有“return”的函数一样。)_
- 请注意,如果代码作为主模块执行,则“export”语句将被完全忽略,并且不会进行求值。

此外,您还可以使用“import”表达式来加载标准库。
Expand All @@ -498,7 +498,7 @@ a := math.abs(-19.84) // == 19.84

## Comments

与Go一样,VDSL支持行注释`//…`和块注释(`/* ... */`).
与Go一样,VDSL支持行注释(`//…`)和块注释(`/* ... */`).

```golang
/*
Expand Down

0 comments on commit b836967

Please sign in to comment.