来自String的Scala FiniteDuration

use*_*547 12 scala duration

是否可以在不编写自定义代码的情况下将其解析StringFiniteDurationScala?

有一个方法Duration,被称为create,接受一个String,但是产生一个Duration并且不确定如何进一步使用它来创建FiniteDuration它.有一些工厂方法Duration生成FiniteDuration实例,但那些暗示我必须解析我的字符串以生成他们的参数(他们的签名期望长和a TimeUnit).

我提到的这些类型来自scala.concurrent.duration.

谢谢.

ale*_*bit 21

您可以使用您提到的方法来创建Duration对象(或只是使用该apply方法).然后,您可以检查它是否是一个FiniteDurationcollect荷兰国际集团它(因为FiniteDuration是分型Duration),虽然也有根据您的使用情况下,几个变种:

scala> val finite = Duration("3 seconds")
scala> val infinite = Duration("Inf")
scala> val fd = Some(finite).collect { case d: FiniteDuration => d }
fd: Option[scala.concurrent.duration.FiniteDuration] = Some(3 seconds)
scala> val id = Some(infinite).collect { case d: FiniteDuration => d }
id: Option[scala.concurrent.duration.FiniteDuration] = None
Run Code Online (Sandbox Code Playgroud)

希望它有所帮助.

  • 非常好,谢谢!在我看到你的评论之前我做了这个:`Duration.apply(myString).asInstanceOf [FiniteDuration]`但是这意味着`myString`总是指有限的持续时间,所以它不是防弹. (3认同)