【问题标题】:print type of variable in ScalaScala中变量的打印类型
【发布时间】:2016-08-10 13:07:39
【问题描述】:

有没有一种简洁的方法可以在 Scala 中打印变量的类名?

有时我会看到val result = foo(a,b,c),因为方法foo 可能会返回不同类型的对象,如果我可以打印类类型的结果,那就太好了。

【问题讨论】:

  • 在 intellij 中你可以使用alt + =
  • @Łukasz,谢谢并投票,我的意思是当程序动态运行时在控制台中,因为类型是由动态运行值决定的。 :)

标签: scala


【解决方案1】:

使用Object.getClass 方法。

Scala Cookbook

【讨论】:

    【解决方案2】:

    我经常使用的快速而肮脏的技巧

    val result: Nothing = foo(a,b,c)
    

    编译器将引发错误,为您提供有关它找到的实际返回类型的信息。

    来自 REPL 的示例

    scala> val foo: Nothing = 42
    <console>:1: error: type mismatch;
    found   : Int(42) // <---- this is what you care about
    required: Nothing
          val foo: Nothing = 42
    

    如果您使用 IDE,您可能会使用更“复杂”的选项:

    【讨论】:

    • 感谢加布里埃尔,投赞成票。有没有办法动态打印类型,因为方法foo 具有不同类型的动态返回并将在运行时决定。
    • @LinMa,这与您提出的问题完全不同 :) 我绝对需要一个更全面的示例来给出适当的答案
    • 如果你想要一个真正的运行时类,只需使用result.getClassSet(1).getClass 将输出 class scala.collection.immutable.Set$Set1
    • 感谢 Gabriele,请投票,让我先将您的回复标记为答案。然后多问。 :))
    猜你喜欢
    • 1970-01-01
    • 2019-04-02
    • 2023-03-26
    • 2014-07-23
    • 2022-01-25
    • 1970-01-01
    相关资源
    最近更新 更多