Scala 2.9:在Set inline上使用toArray的任何方法

时间:2013-01-29 14:42:33

标签: set inline-code scala-2.9 toarray

如果我的问题的答案已经在这里,请链接它......我确实看了。

我正在完成一些教程,这让我感到有些奇怪:这段代码:

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 魔术吧?)

1 个答案:

答案 0 :(得分:1)

toArray方法采用类型为ClassManifest[A]的隐式参数,其中A是元素类型。如果你把它称为mySet.toArray(0),编译器认为你想要显式传递隐式参数,然后抱怨它没有正确的类型。为避免这种情况,您可以这样写:

mySet.toArray.apply(0)