letと可変性
束縛とmut
「letと可変性」はCoddyKit上の無料Learn Rust Codingレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn Rust Coding学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn Rust Codingコースには全4レッスンが含まれています。
letによる値の束縛
Rustでは、letキーワードを使って変数を作成します。これは名前を値に束縛します。
デフォルトでは、すべての束縛が不変です。いったん値を設定すると、変更できません。
fn main() {
let x = 5;
println!("The value of x is: {}", x);
}デフォルトでは不変
Rustでは、意図的に変数を不変にします。これにより、意図しない変更を防ぎ、コードを理解しやすくできます。
不変な束縛に再代入しようとすると、実行時のクラッシュではなくコンパイルエラーになります。
let x = 5;の後にx = 6;とすると、コンパイルできません。
fn main() {
let x = 5;
// x = 6; // this would cause a compile error
println!("x stays {}", x);
}変数を可変にする
値を変更する必要がある場合は、mutキーワードを追加します。これにより、束縛が可変であることを示します。
これで、必要な回数だけ再代入できるようになります。
fn main() {
let mut count = 0;
count = count + 1;
count += 1;
println!("count is {}", count);
}型推論
Rustは通常、値から変数の型を判断します。これを型推論と呼びます。
let x = 5;とすると、xには自動的にi32型が設定されます。
fn main() {
let n = 42; // inferred as i32
let pi = 3.14; // inferred as f64
println!("{} and {}", n, pi);
}型注釈
コロンと型名を使って、型を明示的に指定することもできます。これを型注釈と呼びます。
型注釈は、コンパイラーが型を推論できない場合や、意図を明確にしたい場合に便利です。
fn main() {
let age: u32 = 30;
let price: f64 = 9.99;
println!("age {} price {}", age, price);
}定数
constは常に不変で、型注釈が必須です。値はコンパイル時に判明していなければなりません。
慣例として、定数にはSCREAMING_SNAKE_CASEを使用します。
fn main() {
const MAX_POINTS: u32 = 100_000;
println!("Max is {}", MAX_POINTS);
}constとletの違い
constとletの主な違いは次のとおりです。
constをmutにすることはできません。constには型注釈が必要です。constはコンパイル時定数式でなければなりません。letの値は実行時に計算できます。
fn main() {
const SECONDS_PER_HOUR: u32 = 60 * 60;
let hours = 3;
println!("{} seconds", SECONDS_PER_HOUR * hours);
}ループ内で値を変更する
可変変数は、時間の経過とともに値を蓄積するループでよく使われます。
ここでは、mutを付けたアキュムレーターを使って数値を合計します。
fn main() {
let mut total = 0;
for i in 1..=5 {
total += i;
}
println!("Sum is {}", total);
}未使用の場合のアンダースコア
値を束縛しても一度も使用しないと、Rustは警告を出します。名前の先頭にアンダースコアを付けると、警告を抑制できます。
let _unused = 10;と書くことで、これが意図的であることをコンパイラーに伝えられます。
fn main() {
let _temp = 99;
let used = 1;
println!("{}", used);
}複数の束縛
それぞれにletを付けて、複数の変数を別々の行で宣言できます。
各束縛は独立しており、mutを付けない限り不変です。
fn main() {
let name = "Rust";
let year = 2010;
let mut version = 1;
version += 1;
println!("{} born {} v{}", name, year, version);
}不変性が役立つ理由
不変性は安全性を高める機能です。値が変更されないことをコンパイラーが把握できると、より強い保証を提供し、さまざまな種類のバグを防止できます。
本当に必要な場合にのみ、mutを使って変更可能にしてください。
fn main() {
let config = "production";
// config is guaranteed not to change
println!("Running in {}", config);
}理解度チェック
Rustの変数を変更可能にするキーワードは何ですか?
まとめ
Rustの束縛の基本を学びました。
letは名前を値に束縛し、デフォルトでは不変です。mutは束縛を可変にします。- Rustは型を推論しますが、
:を使って型注釈を追加できます。 constはコンパイル時定数で、常に不変であり、型が必要です。
fn main() {
let mut score: u32 = 0;
const BONUS: u32 = 10;
score += BONUS;
println!("Final score: {}", score);
}よくある質問
「letと可変性」レッスンは無料ですか?
はい。「letと可変性」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn Rust Codingコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn Rust Codingコースには全4レッスンが含まれています。
「letと可変性」で何を学びますか?
束縛とmut ブラウザで直接実行するハンズオンコードでLearn Rust Codingを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn Rust Codingを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn Rust Codingは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「letと可変性」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn Rust Codingレッスンでコードを書いて実行できますか?
はい。すべてのLearn Rust Codingレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。