型推論と明示的な型指定
型注釈を付ける場合とDartに任せる場合
「型推論と明示的な型指定」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。
宣言する2つの方法
型を自分で書くことも、Dartに推測させることもできます。どちらの場合も、内部では同じ強い型付けの変数になります。
明示的な型で型を示す
明示的な宣言では、最初に型を指定します。コードを読む人にとって分かりやすく、コード自体が説明になります。
int total = 42;型推論でDartに任せる
varを使うと、Dartは右辺の値から型を推論します。入力は少なくて済みますが、型は固定されるため安全性は変わりません。
var total = 42; // inferred int型推論はdynamicではありません
推論されるからといって、型が緩いわけではありません。varにも具体的な型が1つ割り当てられ、後から型の合わない値を代入すると拒否されます。
var name = "Sam";
// name = 5; // error型を明示する場面
空のリストのように、値だけでは型が分かりにくい場合は型を明示してください。そうすれば、何を格納するのかを読む人が正確に把握できます。
List<int> scores = [];リテラルから推論される型
Dartは記述したリテラルを確認します。小数点があればdouble、なければintです。リテラルの形によって型が決まります。
var x = 5; // int
var y = 5.0; // double関数の戻り値からも推論される
関数を呼び出すと、varはその関数の戻り値の型から変数の型を自動的に推論します。
var s = "hi".toUpperCase(); // String明示的な型でミスを検出する
明示的な型を宣言すると、間違った値を実行前にDartがすぐ検出してくれます。
int count = "ten"; // compile error可読性と簡潔さ
ここにはトレードオフがあります。明示的な型は分かりやすさを高め、型推論は行を短くします。複数人で共有するコードでは、分かりやすさを優先してください。
どちらも静的型付け
どちらを選んでも、Dartは静的型付けです。型はコンパイル時に固定され、実行中に変わることはありません。
実践的な目安
値から型が明らかな場合はDartに推論させ、意味を補足できる場合は型を書きましょう。コードだけで内容が伝わることを目指してください。
クイックチェック
varは実際には変数の型をどうするのでしょうか?
まとめ:推論と明示
明示的な型は意図を明確にし、型推論はコードを短く保つことを学びました。どちらも静的型付けで安全です。👍
よくある質問
「型推論と明示的な型指定」レッスンは無料ですか?
はい。「型推論と明示的な型指定」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。
「型推論と明示的な型指定」で何を学びますか?
型注釈を付ける場合とDartに任せる場合 ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Dart Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「型推論と明示的な型指定」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDart Academyレッスンでコードを書いて実行できますか?
はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。