変数と束縛
Ceruneでは、名前と値を束縛します。宣言時に型を指定し、既定ではその名前へ再代入できません。mutを付けると、同じ型の新しい値を代入できます。
宣言と再代入
Section titled “宣言と再代入”count: i64 = 40;mut total: i64 = count;total = total + 2;print(total); // 42| 記法 | 意味 |
|---|---|
name: T = value; |
T型の再代入できない束縛を宣言 |
mut name: T = value; |
T型の再代入できる束縛を宣言 |
name = value; |
宣言済みのmutな束縛へ再代入 |
代入の左側には型を再指定しません。宣言でmutを付けていない名前へ代入すると型検査エラーになります。
型推論(infer)
Section titled “型推論(infer)”inferを指定すると、宣言時の式から型を決定します。inferは実行時に型が変わる仕組みではありません。
mut value: infer = 1; // i64value = 2; // OK// value = 0.5; // 型エラー: f64は代入できない手掛かりのない整数リテラルは通常i64、浮動小数点リテラルは通常f64として扱います。明示された型や周囲の式によって、リテラルの型が決まる場合もあります。
数値型の暗黙変換は行いません。詳しくは型と一次資料の数値リテラルの規則を参照してください。
配列と文字列の更新
Section titled “配列と文字列の更新”mutな配列の束縛を通して、要素を更新できます。配列は値としてコピーされるため、コピー元の要素は変更されません。
文字列stringの内容は不変です。mutな文字列の束縛には別の文字列を再代入できますが、文字列内の一部だけを書き換えることはできません。
ブロックスコープ
Section titled “ブロックスコープ”ifやループの本文など、波括弧で囲まれたブロックは新しいスコープを作ります。
- ブロック内で宣言した束縛は、そのブロックの外から参照できません。
- 内側から外側の束縛を参照できます。外側が
mutなら再代入できます。 - 内側のブロックでは、外側と同じ名前の別の束縛を宣言できます(シャドーイング)。
forの初期化で宣言した名前は条件・更新・本文で使えますが、ループ終了後は参照できません。
関連するサンプル・一次資料
Section titled “関連するサンプル・一次資料”- conditional.ceru — 外側の束縛への再代入と、条件分岐内の束縛
- loop_control.ceru —
mutとループ内での更新 - owned_arguments.ceru — 配列のコピーと更新
- 言語リファレンス(一次資料) — 「可変な束縛と再代入」「条件分岐、繰り返し、ブロックスコープ」
このページは要約です。正確な評価順や代入・スコープの規則は一次資料を参照してください。