def simple(seed: Long): RNG = new RNG {
def nextInt = {
val seed2 = (seed * 0x5DEECE66DL + 0xBL) &
((1L << 48) - 1)
((seed2 >>> 16).asInstanceOf[Int],
simple(seed2))
}
}
simple
函数返回了一个RNG
的子类对象,并定义了该子类对象的nextInt
函数- 这并不是递归调用,因为只有在
nextInt
被调用的时候才会再次调用simple
函数,该函数又定义了一个RNG
的子类,并在其实现的nextInt
函数中放入了simple
- 并不是递归,因为只有在方法被调用时,
simple
才再次被使用