IntelliJ Community Edition 2016 Scala Worksheet 显示奇怪的输出而不是文字值
IntelliJ Community Edition 2016 Scala Worksheet shows strange output instead of literal value
我在 InteliJ 中使用了 scala 工作表 运行 遇到一个问题,其中右侧(类似 REPL 的输出)显示的似乎是名称空间或内存地址,而不是有用的-to-a-human 文字值。
在 scala REPL(不是 IntelliJ)中,下面的内容非常合理
scala> val nums = new Array[Int](10)
nums: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
但是,在 Scala 工作表中,同样会产生不太有用的输出
nums: Array[Int] = [I@1a2a52bf
经过简单的谷歌搜索和阅读后,我尝试了以下方法
val nums = new Array[Int](10)
nums
nums.toString()
nums.mkString(", ")
哪个输出
nums: Array[Int] = [I@1a2a52bf
res0: Array[Int] = [I@1a2a52bf
res1: String = [I@1a2a52bf
res2: String = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
我缺少一个简单的解决方案或解释。有没有人运行之前解决过这个问题并修复过它?
这里有一张工作表截图供参考:
IntelliJ 的工作表使用 toString
打印变量。 Scala 中的 Array[Int]
对应于 Java 的 int[]
,它不会覆盖 Object
的 toString
方法。
这是Object
的toString
方法:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
而Scala的REPL对其中的某些类、Array
有特殊的逻辑
"fix" 没有什么可说的,这只是这些工具的设计方式。如果你想在 Idea 的工作表中漂亮地打印 Array 的值,请使用 java.util.Arrays.toString
或将值转换为另一个集合:
val a = Array(1,2,3)
a.toString
java.util.Arrays.toString(a)
a.toSeq
产生:
a: Array[Int] = [I@4df3d702
res0: String = [I@4df3d702
res1: String = [1, 2, 3]
res2: Seq[Int] = WrappedArray(1, 2, 3)
我在 InteliJ 中使用了 scala 工作表 运行 遇到一个问题,其中右侧(类似 REPL 的输出)显示的似乎是名称空间或内存地址,而不是有用的-to-a-human 文字值。
在 scala REPL(不是 IntelliJ)中,下面的内容非常合理
scala> val nums = new Array[Int](10)
nums: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
但是,在 Scala 工作表中,同样会产生不太有用的输出
nums: Array[Int] = [I@1a2a52bf
经过简单的谷歌搜索和阅读后,我尝试了以下方法
val nums = new Array[Int](10)
nums
nums.toString()
nums.mkString(", ")
哪个输出
nums: Array[Int] = [I@1a2a52bf
res0: Array[Int] = [I@1a2a52bf
res1: String = [I@1a2a52bf
res2: String = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
我缺少一个简单的解决方案或解释。有没有人运行之前解决过这个问题并修复过它?
这里有一张工作表截图供参考:
IntelliJ 的工作表使用 toString
打印变量。 Scala 中的 Array[Int]
对应于 Java 的 int[]
,它不会覆盖 Object
的 toString
方法。
这是Object
的toString
方法:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
而Scala的REPL对其中的某些类、Array
有特殊的逻辑
"fix" 没有什么可说的,这只是这些工具的设计方式。如果你想在 Idea 的工作表中漂亮地打印 Array 的值,请使用 java.util.Arrays.toString
或将值转换为另一个集合:
val a = Array(1,2,3)
a.toString
java.util.Arrays.toString(a)
a.toSeq
产生:
a: Array[Int] = [I@4df3d702
res0: String = [I@4df3d702
res1: String = [1, 2, 3]
res2: Seq[Int] = WrappedArray(1, 2, 3)