equal
  deleted
  inserted
  replaced
  
    
    
   425 }  | 
   425 }  | 
   426   | 
   426   | 
   427 "HAL".increment  | 
   427 "HAL".increment  | 
   428   | 
   428   | 
   429   | 
   429   | 
         | 
   430 // Abstract idea:  | 
         | 
   431 // In that version implicit conversions were used to solve the   | 
         | 
   432 // late extension problem; namely, given a class C and a class T,   | 
         | 
   433 // how to have C extend T without touching or recompiling C.   | 
         | 
   434 // Conversions add a wrapper when a member of T is requested   | 
         | 
   435 // from an instance of C.  | 
         | 
   436   | 
         | 
   437 //Another example  | 
         | 
   438   | 
         | 
   439 case class Duration(time: Long, unit: TimeUnit) { | 
         | 
   440   def +(o: Duration) = Duration(time + unit.convert(o.time, o.unit), unit)  | 
         | 
   441 }  | 
         | 
   442   | 
         | 
   443 implicit class Int2Duration(that: Int) { | 
         | 
   444   def seconds = new Duration(that, SECONDS)  | 
         | 
   445   def minutes = new Duration(that, MINUTES)  | 
         | 
   446 }  | 
         | 
   447   | 
         | 
   448 5.seconds + 2.minutes //Duration(125L, SECONDS )  | 
         | 
   449   | 
         | 
   450   | 
   430   | 
   451   | 
   431 // Regular expressions - the power of DSLs in Scala  | 
   452 // Regular expressions - the power of DSLs in Scala  | 
   432 //==================================================  | 
   453 //==================================================  | 
   433   | 
   454   | 
   434 abstract class Rexp  | 
   455 abstract class Rexp  |