如果我的问题的答案已经在这里,请链接它......我确实看了。
我正在完成一些教程,这让我感到有些奇怪:这段代码:
val my_set = Set("one","two","three")
println("First Value:" + my_set.toArray(0))
从命令行运行时导致此错误:
$ scala settoarray.scala
/Users/rwheadon/devStuff/scala_sandbox/so_settoarray.scala:2: error: type mismatch;
found : Int(0)
required: ClassManifest[?]
println("First Value:" + my_set.toArray(0))
^
one error found
我用Google搜索并搜索了提供ClassManifest [?]要求的某些方向,但无法获得任何内联工作。
出于好奇,我试图将相同的简单toArray()转换为val并成功拉出数组:
代码:
val my_set = Set("one","two","three")
val my_arry = my_set.toArray
println("First Value:" + my_arry(0))
从控制台运行:
$ scala so_settoarray.scala
First Value:one
我想知道的是,当我尝试快速进行内联转换(如my_set toArray(0))以快速打印第一个元素时,是否需要添加一些内容?如果我必须设置变量的结果我可以很容易地接受,但我的猜测是我在这里缺少一些小点来使内联数组转换工作。
(... Scala 是魔术吧?)
答案 0 :(得分:1)
toArray
方法采用类型为ClassManifest[A]
的隐式参数,其中A
是元素类型。如果你把它称为mySet.toArray(0)
,编译器认为你想要显式传递隐式参数,然后抱怨它没有正确的类型。为避免这种情况,您可以这样写:
mySet.toArray.apply(0)