关于这个问题Fill immutable map with for loop upon creation,我很好奇this
在Map(1 -> this)
中的含义。
scala> Map(1 -> this)
res6: scala.collection.immutable.Map[Int,type] = Map(1 -> @53e28097)
scala> res6(1)
res7: type = @53e28097
我之前没有看到type
作为一种类型。
这是什么?
答案 0 :(得分:2)
在REPL中似乎有点奇怪,但如果您实际编译或解释脚本,this
确实似乎指向封闭对象的当前实例。
import scala.reflect.runtime.{ universe => ru }
object Main {
def getType[T : ru.TypeTag](instance: T) = ru.typeOf[T]
def sayHello = println("hello!")
def main(args: Array[String]): Unit = {
println(this.getType(123)) // Prints "Int"
this.sayHello // Prints "hello!" to the console
getType(this).decls foreach println _
// Prints the following outputs to the console:
// constructor Main
// method getType
// method sayHello
// method main
}
}
至于为什么它在REPL中没有表现出这种行为,我不确定。