2015/07/19

[ScaVa->Scala] jcwutil第一彈 - ObjFormatter (Implicit Conversions)

在寫程式的時候,常常會經手timestamp,而面對這串長長的數字,會有以下幾種Cases:

  • 某些需求下,會要轉成ISO-8601RFC-3339型式的字串
  • 在debug的時候,常常要再把timestamp轉成日期格式才看得懂,為了增加debug log的閱讀性,我喜歡在把timestamp印出來的時候,順便加上人類看得懂的日期格式。

而這種時候,我通常就把這種需求的東西寫在Utility裡,這時候Scala的Implicit Conversions就是最適合的上場的了! (這跟早期寫C#時的extension method同樣的意思)

趁寫這篇文章的機會,我也順便在GitHub上建立了一個jcwutil,把這個Utility給實作出來,方便取用。


這裡可以看到,我分別建立了LongFormatHandler和DateFormatHandler來分別實作Long和Date型態轉換成ISO-8601和RFC-3339格式的字串,而前面使用了implicit def宣告了LongFormatter和DateFormatter。

在使用時只需要import com.joecwu.jcwutil.ObjFormatter._ ,就可以直接對Long型態或是Date型態使用handler裡所定義的method了。

下面是針對這個ObjFormatter所寫的test spec.




張貼留言

My World