Dường như nó hoạt động một chút lẻ trong REPL, nhưng nếu bạn thực sự biên dịch hoặc giải thích tập lệnh, thì this
thực sự dường như trỏ đến cá thể hiện tại của đối tượng bao quanh.
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
}
}
Vì lý do tại sao nó không thể hiện hành vi này trong REPL, tôi không chắc chắn.
+1, bởi vì mặc dù ban đầu tôi nghĩ rằng điều này sẽ đơn giản "nó chỉ là một tham chiếu đến phạm vi hiện tại", tôi đã hoàn toàn có thể tìm ra nó là gì cho bản thân mình. Điều này không được giúp đỡ bởi sự khó khăn của google "cái này" ở Scala. – KChaloux