在Scala中返回变量的类型

Mic*_*ael 1 variables types scala

如何在Scala中看到变量的类型?

我试过这样做:

val x = 10
println(type(x))
Run Code Online (Sandbox Code Playgroud)

要么

val x = 'Hello!'
println(x.type)
Run Code Online (Sandbox Code Playgroud)

不幸的是,发髻在这两种方式中都有错误.

tim*_*day 5

根据您的尝试,这可能就足够了

val x=10
println(x.getClass.toString)
Run Code Online (Sandbox Code Playgroud)

但是,由于类型擦除,这会中断; Scala有比Java更多的信息,上面只给出了Java的视图.有一个在这里的线程有更多关于这个主题; 结果是:

def manOf[T:Manifest](t:T):Manifest[T] = manifest[T]
println(manOf(1))
println(manOf(List(1,2,3)))
Run Code Online (Sandbox Code Playgroud)

得到你

Int
scala.collection.immutable.List[Int]
Run Code Online (Sandbox Code Playgroud)

这种.getClass.toString方法只会让你变得int神秘莫测class scala.collection.immutable.$colon$colon

当然,如果你使用的是REPL shell,它会告诉你(scala)类型的东西:

$ scala
Welcome to Scala version 2.9.2 (OpenJDK 64-Bit Server VM, Java 1.6.0_27).
Type in expressions to have them evaluated.
Type :help for more information.

scala> val x=10
x: Int = 10
Run Code Online (Sandbox Code Playgroud)

  • 在 REPL 中,您还可以使用 `:type` 命令(它显示其参数的编译时类型,而无需对其求值)。 (2认同)