Migrating from Scala 2.7 | Contents |
Porting your existing Scala applications to use the new collections should be almost automatic. There are only a couple of possible issues to take care of.
Generally, the old functionality of Scala 2.7 collections has been left in place. Some features have been deprecated, which means they will removed in some future release. You will get a deprecation warning when you compile code that makes use of these features in Scala 2.8. In a few places deprecation was unfeasible, because the operation in question was retained in 2.8, but changed in meaning or performance characteristics. These cases will be flagged with migration warnings when compiled under 2.8. To get full deprecation and migration warnings with suggestions how to change your code, pass the -deprecation and -Xmigration flags to scalac (note that -Xmigration is an extended option, so it starts with an X.) You can also pass the same options to the scala REPL to get the warnings in an interactive session. Example:
>scala -deprecation -Xmigration
Welcome to Scala version 2.8.0.final
Type in expressions to have them evaluated.
Type :help for more information.
scala> val xs = List((1, 2), (3, 4))
xs: List[(Int, Int)] = List((1,2), (3,4))
scala> List.unzip(xs)
<console>:7: warning: method unzip in object List is deprecated: use xs.unzip instead of List.unzip(xs)
List.unzip(xs)
^
res0: (List[Int], List[Int]) = (List(1, 3),List(2, 4))
scala> xs.unzip
res1: (List[Int], List[Int]) = (List(1, 3),List(2, 4))
scala> val m = xs.toMap
m: scala.collection.immutable.Map[Int,Int] = Map((1,2), (3,4))
scala> m.keys
<console>:8: warning: method keys in trait MapLike has changed semantics:
As of 2.8, keys returns Iterable[A] rather than Iterator[A].
m.keys
^
res2: Iterable[Int] = Set(1, 3)
There are two parts of the old libraries which have been replaced wholesale, and for which deprecation warnings were not feasible.
So, if your code uses either jcl or projections there might be some minor rewriting to do.
Next: Acknowledgements
Migrating from Scala 2.7 | Contents |