2014-02-19 21 views
0

我正在寫我的第一個Scala應用程序,我有一個問題nscala-timejoda-time庫包裝。斯卡拉與nscala時間 - 沒有分鐘功能

我有這樣一個類:

package domain 

import org.joda.time.{Period => JodaPeriod} 

case class GroundTime(val minimum: JodaPeriod, standard: JodaPeriod) 

(我改名爲Period類,因爲我已經在我的域名Period類)現在

,在我specs2測試我想寫的東西,如:

"check standard ground time constraint" in { 
    import com.github.nscala_time.time.Imports._ 

    val groundTime = GroundTime(minimum=10 minutes, standard=15 minutes) 

但我收到錯誤cannot resolve symbol minutes

我想要做這樣的事情片段,是githubnscala-time庫:

2.hours + 45.minutes + 10.seconds 
// returns com.github.nscala_time.time.DurationBuilder 
// (can be used as a Duration or as a Period) 
+0

爲什麼你不想寫'val groundTime = GroundTime(minimum = 10.minutes,standard = 15.minutes)'? –

+0

@BobDalgleish:在這種情況下會發生什麼變化? –

回答

2

我挖成specs2代碼一點點,我發現,通過擴展Specification也從specs2導入類似TimeConversions並有minutes「暗影」minutes函數從nscala-time(我說陰影,但它可能是一個隱式轉換問題)。

而且我發現所謂的特質從specs2NoTimeConversions所以現在當我寫

MySpec extends Specification with NoTimeConversions 

我可以寫10.minutes和它產生DurationBuilder,我首先想。

+1

由於[Scala的功能模塊化](http://docs.scala-lang.org/sips/completed/modularizing-language-features.html),您還應該導入'scala.language.postfixOps' **未來的版本,你將不得不特別啓用'10分鐘'等後綴運算符,否則編譯器會報告一個錯誤(而不是警告)。相關信息[here](http://stackoverflow.com/questions/13011204/scalas-postfix-ops)。 (閱讀撤回答案的內容作爲評論。) –