私は Scala 初心者で、type
キーワードについてあまり情報を見つけることができませんでした。次の式が何を意味するのかを理解しようとしています。
type FunctorType = (LocalDate, HolidayCalendar, Int, Boolean) => LocalDate
FunctorType
は別名のようなものですが、何を意味するのでしょうか?
ベストアンサー1
実はtype
Scalaのキーワードは、複雑な型を短い名前に別名付ける以上のことができる。タイプメンバー。
ご存知のとおり、クラスにはフィールド メンバーとメソッド メンバーを含めることができます。また、Scala ではクラスに型メンバーを含めることもできます。
あなたの特定のケースではtype
、確かに、より簡潔なコードを記述できるようにするエイリアスを導入しています。型システムは、型チェックが実行されるときに、エイリアスを実際の型に置き換えるだけです。
しかし、このようなこともできます
trait Base {
type T
def method: T
}
class Implementation extends Base {
type T = Int
def method: T = 42
}
クラスの他のメンバーと同様に、型メンバーも抽象化することができ (実際の値を指定しないだけ)、実装でオーバーライドできます。
ジェネリックで実装できるものの多くは抽象型メンバーに変換できるため、型メンバーはジェネリックのデュアルとして見ることができます。
はい、エイリアスに使用できますが、Scala の型システムの強力な機能であるため、これに限定しないでください。
詳細については、この優れた回答をご覧ください。