2013-11-02 4 views

ответ

5

В зависимости, что вы пытаетесь сделать, это может быть достаточно

val x=10 
println(x.getClass.toString) 

Однако это ломается из-за типа erasue; Scala имеет больше информации, чем Java, и приведенное выше дает вам представление Java. Есть thread here с более подробной информацией по этой теме; результат:

def manOf[T:Manifest](t:T):Manifest[T] = manifest[T] 
println(manOf(1)) 
println(manOf(List(1,2,3))) 

получает вас

Int 
scala.collection.immutable.List[Int] 

метод Тогда как .getClass.toString будет только вам int и таинственный class scala.collection.immutable.$colon$colon

Конечно, если вы с помощью РЕПЛ оболочки он говорит вам, (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 
+1

В REPL, у вас также есть команда ': type' (она отображает тип компиляции своего аргумента без необходимости его оценки). – gourlaysama

+1

Runtime class of List (1, 2, 3) '-' :: '- [не так загадочно] (http://www.scala-lang.org/api/current/#scala.collection.immutable. $ colon $ colon) – senia

+0

Возможно, «непрозрачный», а не «таинственный», было бы лучшим описанием. – timday

Смежные вопросы