Projects STRLCPY CVS Commits b8369674
🤬
  • ■ ■ ■ ■ ■ ■
    VDSL_CN.md
    skipped 52 lines
    53 53   
    54 54  ### Const 值
    55 55   
    56  -在VDSL中,基本上所有的值除了数组和映射都是常量。
     56 +在VDSL中,基本上所有的值(除了数组和映射)都是常量。
    57 57   
    58 58  ```golang
    59 59  s := "12345"
    skipped 19 lines
    79 79  a = false // ok
    80 80  ```
    81 81   
    82  -请注意,如果复制使用“copy”内置函数常量值将返回一个“可变”副本。此外,不变性不适用于数组或映射值的各个元素,除非它们是显式生成的常量。
     82 +请注意,如果复制(使用“copy”内置函数)常量值将返回一个“可变”副本。此外,不变性不适用于数组或映射值的各个元素,除非它们是显式生成的常量。
    83 83   
    84 84  ```golang
    85 85  a := const({b: 4, c: [1, 2, 3]})
    skipped 121 lines
    207 207  - `:=`运算符在作用域中定义一个新变量并赋值。
    208 208  - `=`运算符为作用域中的现有变量分配一个新值。
    209 209   
    210  -变量在全局范围在函数外部定义或本地范围在功能内部定义中定义。
     210 +变量在全局范围(在函数外部定义)或本地范围(在功能内部定义)中定义。
    211 211   
    212 212  ```golang
    213 213  a := "foo" // define 'a' in global scope
    skipped 72 lines
    286 286  | `&` | 按位与运算符 | int |
    287 287  | `\|` | 按位或运算符 | int |
    288 288  | `^` | 按位异或运算符 | int |
    289  -| `&^` | 位清除AND NOT | int |
     289 +| `&^` | 位清除(AND NOT) | int |
    290 290  | `<<` | 左移运算符 | int |
    291 291  | `>>` | 右移运算符 | int |
    292 292  | `<` | 检查左边值是否小于右边值 | int, float, char, time, string |
    skipped 1 lines
    294 294  | `>` | 检查左边值是否大于右边值 | int, float, char, time, string |
    295 295  | `>=` | 检查左边值是否大于等于右边值 | int, float, char, time, string |
    296 296   
    297  -### 三
     297 +### 三
    298 298   
    299  -VDSL有一个三元条件运算符`条件表达式true表达式false表达式`。
     299 +VDSL有一个三元条件运算符`(条件表达式)?(true表达式):(false表达式)`。
    300 300   
    301 301  ```golang
    302 302  a := true ? 1 : -1 // a == 1
    skipped 26 lines
    329 329   
    330 330  一元运算符具有最高优先级,三元运算符具有最低优先级。二进制运算符有五个优先级。
    331 331   
    332  -乘法运算符绑定最强,其次是加法运算符,比较运算符,“&&”逻辑AND,最后是“||”逻辑OR
     332 +乘法运算符绑定最强,其次是加法运算符,比较运算符,“&&”(逻辑AND),最后是“||”(逻辑OR)
    333 333   
    334 334  | 优先级 | 操作符 |
    335 335  | :---: | :---: |
    skipped 7 lines
    343 343   
    344 344  ### 选择器和索引器
    345 345   
    346  -可以使用选择器`.`和索引器`[]`运算符来读取或写入复合类型数组、映射、字符串、字节的元素。
     346 +可以使用选择器(`.`)和索引器(`[]`)运算符来读取或写入复合类型(数组、映射、字符串、字节)的元素。
    347 347   
    348 348  ```golang
    349 349  ["one", "two", "three"][1] // == "two"
    skipped 86 lines
    436 436   
    437 437  VDSL中新增了“For In”语句。它类似于Go的“for range”语句。
    438 438   
    439  -“For In”语句可以迭代任何可迭代的值类型数组、映射、字节、字符串、nil
     439 +“For In”语句可以迭代任何可迭代的值类型(数组、映射、字节、字符串、nil)
    440 440   
    441 441  ```golang
    442 442  for v in [1, 2, 3] { // array: element
    skipped 31 lines
    474 474  ```
    475 475   
    476 476  默认情况下,“import”将模块文件缺少的扩展名解决为"`.dsl`"[^note]。
    477  -因此,“sum:=import"./sum"”相当于“sum:=import"./sum.dsl"”。
     477 +因此,“sum:=import("./sum")”相当于“sum:=import("./sum.dsl")”。
    478 478   
    479 479  [^note]:
    480 480   如果在Go中使用VDSL作为库,则可以自定义文件扩展名“`.dsl`”。在这种情况下,请使用“Compiler”类型的“SetImportFileExt”函数。
    skipped 5 lines
    486 486   - 模块可以返回“导出”任何类型的值:int、map、function等。
    487 487   - 模块中的export类似于函数中的return:它停止执行并导入代码返回一个值。
    488 488   - `export`的值总是常量。
    489  - - 如果模块没有任何“export”语句,则“import”表达式只返回“nil”_就像没有“return”的函数一样。_
     489 + - 如果模块没有任何“export”语句,则“import”表达式只返回“nil”_(就像没有“return”的函数一样。)_
    490 490   - 请注意,如果代码作为主模块执行,则“export”语句将被完全忽略,并且不会进行求值。
    491 491   
    492 492  此外,您还可以使用“import”表达式来加载标准库。
    skipped 5 lines
    498 498   
    499 499  ## Comments
    500 500   
    501  -与Go一样,VDSL支持行注释`//…`和块注释(`/* ... */`).
     501 +与Go一样,VDSL支持行注释(`//…`)和块注释(`/* ... */`).
    502 502   
    503 503  ```golang
    504 504  /*
    skipped 24 lines
Please wait...
Page is in error, reload to recover