Localized V2 rewrite for this language is in progress. Showing English-first content for now.

变量与类型

绑定(let/var)、类型注解,以及主要内建类型。

变量与类型

Sounio 是静态类型语言,大多数局部绑定都可以进行类型推断。

变量声明

不可变变量(let)

默认情况下,变量是不可变的:

let x = 42          // Type inferred as i32
let name = "Alice"  // Type inferred as string
let pi = 3.14159    // Type inferred as f64

可变变量(var)

需要可变时使用 var:

var counter = 0
counter = counter + 1  // OK

let fixed = 10
fixed = 20  // Error: cannot assign to immutable variable

类型注解

你可以显式标注类型:

let x: i32 = 42
let ratio: f64 = 0.5
let flag: bool = true
let message: string = "Hello"

基本类型

类型说明示例
i8, i16, i32, i64有符号整数let x: i32 = -42
u8, u16, u32, u64无符号整数let y: u32 = 42
f32, f64浮点数let pi: f64 = 3.14
bool布尔值let flag: bool = true
charUnicode 字符let c: char = 'A'
string / String字符串let s = "hello"
str借用的字符串切片let s: &str = "hello"

复合类型

元组

let point = (10, 20)
let first = point.0  // 10
let second = point.1 // 20

数组

let numbers: [i32; 5] = [1, 2, 3, 4, 5]
let first = numbers[0]  // 1

向量(Vec<T>

let items: Vec<i32> = [1, 2, 3, 4]
for x in items {
    // ...
}

类型推断

Sounio 会根据上下文推断类型:

let values = [1, 2, 3]  // Array literal
let vec_values: Vec<i32> = values

规范说明: 单位(units)可以解析(例如 unit kg; unit g = 0.001 * kg; unit mg = 0.001 * g;),但完整的单位检查可能只在部分编译器模式/特性开关下启用。

认识论类型(Knowledge<T>

用于携带不确定性的值:

let k = Knowledge { value: 42.0 }
let x: f64 = k.unwrap("accepted for demo")

更多内容见 Knowledge Types

下一步