var 变量和赋值

声明一个具有指定类型的变量:

  1. var x: int # x 的值为默认值 0

连续声明几个相同类型的变量:

  1. var x, y, z: int

同时声明几个具有不同类型的变量:

  1. var # 注意,var 必须单独一行
  2. # 这里可以加注释,也可以不加
  3. x, y: int
  4. # 这里可以加注释,也可以不加
  5. s, t: string

声明变量时并赋初值:

  1. var x: int = 1
  2. var x, y: int = 2 # x 和 y 的值都为 2
  3. var x, y: int = 2, 3 # 不支持这种写法

如果初值的类型确定,那么声明变量时可以不指定类型,编译器自动推断类型:

  1. var x, y = 2 # x 和 y 都是 int

var 变量的值可以通过赋值运算符 = 改变:

  1. var x, y = 2
  2. x = 3
  3. echo x, y # 输出 23

常量

常量被绑定上固定的值,且不可变。常量的值必须要能够在编译时被确定。

  1. const s: string = "Hello" # 明确指定类型的常量
  2. const t = "world" # 推断出类型的常量
  3. const
  4. a = 1 # a 的值在编译时确定为 1
  5. b = a + 3 # b 的值也能在编译时确定

let 语句

let 语句声明一个变量,但是这个变量的值不可变:

  1. let x, y = 1
  2. x = 2 # 语法错误,let 声明的变量值不可变

letconst 是有区别的!

  • const 要求编译器在编译阶段对常量进行求值
  • let 是说,变量被声明后就和初值绑死了,不可以再对其赋值

这意味着,let 变量的是是可以在运行时求出来的:

  1. const input = readLine(stdin) # 不可以,编译时无法确定 input 的值
  2. let input = readLine(stdin) # 可以