名前が 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 ってこういった細かい機能が多いですよね。だからこそコップ本があの厚みになるんでしょうね。