`this`输入Scala

时间:2015-06-01 16:35:34

标签: scala

关于这个问题Fill immutable map with for loop upon creation,我很好奇thisMap(1 -> this)中的含义。

scala> Map(1 -> this)
res6: scala.collection.immutable.Map[Int,type] = Map(1 -> @53e28097)

scala> res6(1)
res7: type = @53e28097

我之前没有看到type作为一种类型。

这是什么?

1 个答案:

答案 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中没有表现出这种行为,我不确定。