名前のない再帰関数
Scalaの無名関数で再帰?
object AnonymousRec { def main(args : Array[String]) : Unit = { //doesn't compile // {() => this()}.apply() //anonymous class new (Unit => Unit){ override def apply(a : Unit){ this() } }.apply() } }
無名関数ではthisが参照できなかったので失敗。
とりあえず無名クラスで試す。
this()はthis.apply()なのでこれは普通にapplyからapplyを呼んでいる気がする。
あんまり無名じゃない。
リフレクションを使ったら?
object AnonymousRec2 { def main(args : Array[String]) : Unit = {_ : Unit => //reflection Class.forName("AnonymousRec2$$anonfun$1"). newInstance().asInstanceOf[Unit => Unit].apply() }.apply() }
無名関数のnewInstance(無引数コンストラクタ)と
asInstanceOfによるキャストは問題なくできた。
いや、インスタンス作りすぎです。