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 を参照してください。

次のステップ