Untitled

Run Settings
LanguageScala
Language Version
Run Command
import scala.language.dynamics object Main extends App { def to[T](value: Any): T = value.asInstanceOf[T] class Thing(pairs: Tuple2[String, Any]*) extends Dynamic { var things: Map[String, Any] = Map[String, Any]() pairs foreach {p => this.things += (p._1 -> p._2) } def selectDynamic(key: String): Any = { if(things contains key) return (things get key) get else return None } def updateDynamic(key: String)(value: Any) = { if(things contains key) things -= key things += (key -> value) } //Option: get, isEmpty /*def applyDynamic(key: String)(args: Any*): Any = { if(things contains key) { return ((things get key) get) match { case fn_a: Function[Any] => to[Function[Any]]( (things get key) get)() case fn_a_a: Function[Any, Any] => to[Function[Any, Any]]( (things get key) get)(args:_*) case fn_a_a_a: Function[Any, Any, Any] => to[Function[Any, Any, Any]]( (things get key) get)(args:_*) } } else return None }*/ def apply(key: String): Any = { if(things contains key) return (things get key) get else return None } } var thing1 = new Thing( "a" -> 1, "b" -> 2, "c" -> new Thing("d" -> 5.6), "e" -> {(a: Any) => to[Int](a) * 2} ) println(thing1.things) //println((thing1("e").asInstanceOf[Function1[Any, Any]])(3)) println(to[Function[Any, Any]](thing1("e"))(3)) }
Editor Settings
Theme
Key bindings
Full width
Lines