Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IntelliJ Community Edition 2016 Scala工作表显示奇怪的输出,而不是文字值_Scala_Intellij Idea_Intellij 16 - Fatal编程技术网

IntelliJ Community Edition 2016 Scala工作表显示奇怪的输出,而不是文字值

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] =

我在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] = [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
打印变量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的工作表使用
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版本,这在您的情况下应该更重要。