Monday, 15 August 2011

scala - Construct a sequence of time related names -



scala - Construct a sequence of time related names -

we have next sequence in our code:

val halfhourlycolumnnames = seq("t0000", "t0030", "t0100", "t0130", "t0200", "t0230", "t0300", "t0330", "t0400", "t0430", "t0500", "t0530", "t0600", "t0630", "t0700", "t0730", "t0800", "t0830", "t0900", "t0930", "t1000", "t1030", "t1100", "t1130", "t1200", "t1230", "t1300", "t1330", "t1400", "t1430", "t1500", "t1530", "t1600", "t1630", "t1700", "t1730", "t1800", "t1830", "t1900", "t1930", "t2000", "t2030", "t2100", "t2130", "t2200", "t2230", "t2300", "t2330")

i rewrite in much more concise way. shortest way create above sequence in scala?

here go:

scala> (0 23).flatmap( h => list(0,30).map( m => "t%02d%02d".format(h,m) )) res8: scala.collection.immutable.indexedseq[string] = vector( t0000, t0030, t0100, t0130, t0200, t0230, t0300, t0330, t0400, t0430, t0500, t0530, t0600, t0630, t0700, t0730, t0800, t0830, t0900, t0930, t1000, t1030, t1100, t1130, t1200, t1230, t1300, t1330, t1400, t1430, t1500, t1530, t1600, t1630, t1700, t1730, t1800, t1830, t1900, t1930, t2000, t2030, t2100, t2130, t2200, t2230, t2300, t2330)

using scala 2.10: for comprehension , string interpolation formatting:

scala> for( h <- 0 23; m <- seq(0,30)) yield f"t$h%02d$m%02d" res6: scala.collection.immutable.indexedseq[string] = vector( t0000, t0030, t0100, t0130, t0200, t0230, t0300, t0330, t0400, t0430, t0500, t0530, t0600, t0630, t0700, t0730, t0800, t0830, t0900, t0930, t1000, t1030, t1100, t1130, t1200, t1230, t1300, t1330, t1400, t1430, t1500, t1530, t1600, t1630, t1700, t1730, t1800, t1830, t1900, t1930, t2000, t2030, t2100, t2130, t2200, t2230, t2300, t2330)

scala

No comments:

Post a Comment