summaryrefslogtreecommitdiff
path: root/test/files/run/Meter.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2012-02-17 16:35:48 +0100
committerMartin Odersky <odersky@gmail.com>2012-02-17 16:35:48 +0100
commit8cc7de74d35b437b7126d02a6219796b5872ac14 (patch)
tree5111f550164666a8e5b1db5ee101e64dab54047f /test/files/run/Meter.scala
parent186d8554456b6a2d024ada1bd2dd1a29cc0c430f (diff)
downloadscala-8cc7de74d35b437b7126d02a6219796b5872ac14.tar.gz
scala-8cc7de74d35b437b7126d02a6219796b5872ac14.tar.bz2
scala-8cc7de74d35b437b7126d02a6219796b5872ac14.zip
New FlatArray scheme for handling value classes.
Diffstat (limited to 'test/files/run/Meter.scala')
-rw-r--r--test/files/run/Meter.scala33
1 files changed, 21 insertions, 12 deletions
diff --git a/test/files/run/Meter.scala b/test/files/run/Meter.scala
index 15d35054a2..936b8d98b7 100644
--- a/test/files/run/Meter.scala
+++ b/test/files/run/Meter.scala
@@ -1,17 +1,21 @@
-import collection.generic.RowFactory
-
-class Meter(val unbox: Double) extends AnyVal with Boxed[Double] with Printable {
+class Meter(val underlying: Double) extends AnyVal with Printable {
def + (other: Meter): Meter =
- new Meter(this.unbox + other.unbox)
- def / (other: Meter): Double = this.unbox / other.unbox
- def / (factor: Double): Meter = new Meter(this.unbox / factor)
- def < (other: Meter): Boolean = this.unbox < other.unbox
- override def toString: String = unbox.toString+"m"
+ new Meter(this.underlying + other.underlying)
+ def / (other: Meter): Double = this.underlying / other.underlying
+ def / (factor: Double): Meter = new Meter(this.underlying / factor)
+ def < (other: Meter): Boolean = this.underlying < other.underlying
+ override def toString: String = underlying.toString+"m"
}
-object Meter extends RowFactory[Double, Meter] {
+object Meter extends (Double => Meter) {
+
def apply(x: Double): Meter = new Meter(x)
-}
+ implicit val boxings = new BoxingConversions[Meter, Double] {
+ def box(x: Double) = new Meter(x)
+ def unbox(m: Meter) = m.underlying
+ }
+
+}
trait Printable extends Any { def print: Unit = Console.print(this) }
object Test extends App {
@@ -55,14 +59,19 @@ object Test extends App {
}
{ println("testing wrapped arrays")
- val arr = Meter.Row(x, y + x)
+ import collection.mutable.FlatArray
+ val arr = FlatArray(x, y + x)
println(arr)
- def foo(x: Meter.Row) {
+ def foo(x: FlatArray[Meter]) {
for (i <- 0 until x.length) { x(i).print; println(" "+x(i)) }
}
val m = arr(0)
println(m)
foo(arr)
+ val ys: Seq[Meter] = arr map (_ + new Meter(1))
+ println(ys)
+ val zs = arr map (_ / Meter(1))
+ println(zs)
}
}