Scalaの「型推論(Type Inference)」は、変数や式に明示的な型を指定しなくても、コンパイラが自動的に適切な型を推論してくれる機能です。これにより、コードの記述が簡潔になりつつも、静的型付けの恩恵(型安全性や補完機能など)を受けることができます。
1. 基本的な型推論の例
Scalaでは以下のように、変数に型を明示しなくても、自動的に推論されます。
このように、右辺の値(リテラル)をもとに型が決まるため、明示的に型を書く必要がない場合も多いです。
2. 関数における型推論
関数定義でも、戻り値の型は推論されます。
この場合、a + b の結果が Int なので、戻り値の型は Int と推論されます。ただし、再帰関数の場合は型推論が効かないため、戻り値の型を明示する必要があります。
3. var に対する推論
var に対する推論val だけでなく var にも型推論は適用されます。ただし、var は再代入可能なため、一度決まった型は変更できません。
4. 型推論の限界と注意点
型推論は便利ですが、以下のようなケースでは明示的な型指定が推奨されます。
-
APIの戻り値が分かりづらい場合
-
抽象的な型(例えば関数型)を返す場合
-
可読性や保守性を高めたい場合
例:
まとめ
| 特徴 | 説明 |
|---|---|
| 静的型付け | Scalaは静的型言語だが、型推論により柔軟な記述が可能 |
| 型の省略 | 明確な右辺があれば、型を省略してもよい |
| 再帰関数 | 戻り値の型は必ず明示する必要がある |
| 可読性の考慮 | 複雑な型や公開APIでは型を明示したほうがよい |
生成日:2025/05/04