IntelliJ Community Edition 2016 Scala工作表显示奇怪的输出,而不是文字值
我在InteliJ中使用了scala工作表,遇到了一个问题,右侧(类似REPL的输出)显示的是名称空间或内存地址,而不是有用的对人文本值 在scala REPL(而不是IntelliJ)中,以下内容非常合理IntelliJ Community Edition 2016 Scala工作表显示奇怪的输出,而不是文字值,scala,intellij-idea,intellij-16,Scala,Intellij Idea,Intellij 16,我在InteliJ中使用了scala工作表,遇到了一个问题,右侧(类似REPL的输出)显示的是名称空间或内存地址,而不是有用的对人文本值 在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] =
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
打印变量Int[]
,它不重写对象的toString
方法
下面是Object
的toString
方法:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
另一方面,Scala的REPL对某些类有特殊的逻辑,其中包括Array
没有什么需要“修复”,只是这些工具的设计方式。如果要在Idea的工作表中漂亮地打印数组的值,请使用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)
IntelliJ的工作表使用toString
打印变量Array[Int]
对应于Java的Int[]
,它不重写对象的toString
方法
下面是Object
的toString
方法:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
另一方面,Scala的REPL对某些类有特殊的逻辑,其中包括Array
没有什么需要“修复”,只是这些工具的设计方式。如果要在Idea的工作表中漂亮地打印数组的值,请使用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)
Intellij 2016.1.4中的输出对我来说是正确的。Intellij工作表始终与scala REPL存在一些不一致,特别是当您使用一些库(如CAT/Shapess)或尝试一些与作用域相关的情况时。但我想您最好检查Intellij scalac版本,这在您的情况下应该更重要。Intellij 2016.1.4中的输出对我来说是正确的。Intellij工作表始终与scala REPL存在一些不一致之处,特别是当您使用一些库(如CAT/Shapess)或尝试一些与作用域相关的情况时。但我想您最好检查Intellij scalac版本,这在您的情况下应该更重要。