2014-02-19 23 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)。 (阅读撤回答案的内容作为评论。) –