tubo28's blog
つぼの 140 文字より長い文章置き場
About me

名前が this のメソッドは Auxiliary Constructor

Last Modified:
Tags: scala

Scala ではクラスに this という名前のメソッドを定義するとコンストラクタになります。次のコードは標準ライブラリ Random の例です。

https://github.com/scala/scala/blob/v2.13.8/src/library/scala/util/Random.scala#L23-L30

class Random(val self: java.util.Random) extends AnyRef with Serializable {
  /** Creates a new random number generator using a single long seed. */
  def this(seed: Long) = this(new java.util.Random(seed))

  /** Creates a new random number generator using a single integer seed. */
  def this(seed: Int) = this(seed.toLong)

  /** Creates a new random number generator. */
  def this() = this(new java.util.Random())
object Main extends App {
  // 2 番目のコンストラクタを呼び出し
  val r = new scala.util.Random(2022);
  println(r.nextInt());
}

さて、この機能には auxiliary constructor という名前があります。ときたま見かけるものの名前が分からず、調べるのに苦労したのでここにメモしておきます。

Scala ってこういった細かい機能が多いですよね。だからこそコップ本があの厚みになるんでしょうね。