Scala の「type」キーワードの機能を理解する 質問する

Scala の「type」キーワードの機能を理解する 質問する

私は Scala 初心者で、typeキーワードについてあまり情報を見つけることができませんでした。次の式が何を意味するのかを理解しようとしています。

type FunctorType = (LocalDate, HolidayCalendar, Int, Boolean) => LocalDate

FunctorTypeは別名のようなものですが、何を意味するのでしょうか?

ベストアンサー1

実はtypeScalaのキーワードは、複雑な型を短い名前に別名付ける以上のことができる。タイプメンバー

ご存知のとおり、クラスにはフィールド メンバーとメソッド メンバーを含めることができます。また、Scala ではクラスに型メンバーを含めることもできます。

あなたの特定のケースではtype、確かに、より簡潔なコードを記述できるようにするエイリアスを導入しています。型システムは、型チェックが実行されるときに、エイリアスを実際の型に置き換えるだけです。

しかし、このようなこともできます

trait Base {
  type T

  def method: T
}

class Implementation extends Base {
  type T = Int

  def method: T = 42
}

クラスの他のメンバーと同様に、型メンバーも抽象化することができ (実際の値を指定しないだけ)、実装でオーバーライドできます。

ジェネリックで実装できるものの多くは抽象型メンバーに変換できるため、型メンバーはジェネリックのデュアルとして見ることができます。

はい、エイリアスに使用できますが、Scala の型システムの強力な機能であるため、これに限定しないでください。

詳細については、この優れた回答をご覧ください。

Scala: 抽象型とジェネリック

おすすめ記事