这不起作用:
def giveArray[T](elem:T):Array[T] = {
new Array[T](1)
}
Run Code Online (Sandbox Code Playgroud)
但这样做:
def giveList[T](elem:T):List[T] = {
List.empty[T]
}
Run Code Online (Sandbox Code Playgroud)
我确信这是一个非常基本的东西,我知道Arrays在Scala中表现得有点不寻常.
有人可以向我解释如何创建这样一个数组,以及为什么它首先不起作用?
huy*_*hjl 19
这是由于JVM类型擦除.引入Manifest来处理这个问题,它们会将类型信息附加到类型T上.这将编译:
def giveArray[T: Manifest](elem:T):Array[T] = {
new Array[T](1)
}
Run Code Online (Sandbox Code Playgroud)
对此有几乎重复的问题.让我看看我是否可以挖掘.有关详细信息,请参阅http://www.scala-lang.org/docu/files/collections-api/collections_38.html.我引用(在你的情况下用elem替换evenElems)
这里需要的是通过提供一些运行时提示来帮助编译器,提示evenElems的实际类型参数是什么
特别是你也可以使用ClassManifest.
def giveArray[T: ClassManifest](elem:T):Array[T] = {
new Array[T](1)
}
Run Code Online (Sandbox Code Playgroud)
类似的问题:
| 归档时间: |
|
| 查看次数: |
4089 次 |
| 最近记录: |