【发布时间】:2010-12-23 08:25:47
【问题描述】:
我想编写一个SparseVector[T] 类,其中T 可以是双精度、整数或布尔值。
该类不会由数组支持(因为我想要一个稀疏数据结构),但我已经看到,当我构建一个 AnyVal 类型的空数组时,元素被初始化为默认值。例如:
scala> new Array[Int](10)
res0: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
scala> new Array[Boolean](10)
res1: Array[Boolean] = Array(false, false, false, false, false, false, false, false, false, false)
scala> new Array[Double](10)
res2: Array[Double] = Array(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
如何在我的类中包含这个默认值?我想得到的行为是:
val v = new SparseVector[Double](100)
println( v(12) ) // should print '0.0'
val w = new SparseVector[Boolean](100)
println( v(85) ) // should print 'false'
谢谢
【问题讨论】:
-
这很有趣。 C# 提供了一个“default”关键字,它接受一个类型并提供该类型的默认值。它以不同的方式处理值和引用类型,因此 default(int) 为 0 而 default(SomeClass) 为 null。我想知道 scala 是否有类似的构造。
标签: generics scala default-value