case class Shaka(whenBorn: Shaka => Unit) { def born() = whenBorn(this) def walk(step: Int) = println(s"${step}歩歩いた") def raiseRightHandToHeaven() = println("右手で天を指す") def lowerLeftHandToEarth() = println("左手で地を指す") def say(msg: String) = println(s"${msg}と話す") } val shaka = Shaka { i => i.walk(7) i.raiseRightHandToHeaven() i.lowerLeftHandToEarth() i.say("天上天下唯我独尊") } shaka born()