Как я могу увидеть тип переменной в Scala?Тип возвращаемой переменной в Scala
Я пытался сделать это так:
val x = 10
println(type(x))
или
val x = 'Hello!'
println(x.type)
Bun, к сожалению, в обоих этих способов я есть ошибка.
Как я могу увидеть тип переменной в Scala?Тип возвращаемой переменной в Scala
Я пытался сделать это так:
val x = 10
println(type(x))
или
val x = 'Hello!'
println(x.type)
Bun, к сожалению, в обоих этих способов я есть ошибка.
В зависимости, что вы пытаетесь сделать, это может быть достаточно
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
В REPL, у вас также есть команда ': type' (она отображает тип компиляции своего аргумента без необходимости его оценки). – gourlaysama
Runtime class of List (1, 2, 3) '-' :: '- [не так загадочно] (http://www.scala-lang.org/api/current/#scala.collection.immutable. $ colon $ colon) – senia
Возможно, «непрозрачный», а не «таинственный», было бы лучшим описанием. – timday