2015-11-12 21 views
6

Özel kod yazmadan String Scala'da FiniteDuration ürününe ayrıştırmak mümkün müdür?Scala FiniteDuration Dize

üretir ancak String kabul create denilen Duration bir yöntem, vardır bir Duration ve daha fazla ondan bir FiniteDuration oluşturmak için nasıl kullanılacağını emin değilim. FiniteDuration örnekleri üreten Duration üzerinde birkaç fabrika yöntemleri vardır, ancak bu onların parametreleri üretmek için benim dizgisi ayrıştırmak zorunda imgesini (imza uzun bir bekliyor ve TimeUnit).

Bahsettiğim bu tipler scala.concurrent.duration'dan alınmıştır.

Teşekkür ederiz.

cevap

14

Bir Duration nesnesini oluşturmak için bahsettiğiniz yöntemi kullanabilirsiniz (veya yalnızca apply yöntemini kullanın).

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 

taslağın yardımcı Umut: ( FiniteDuration Duration bir alt tipi olduğundan) bunu ing collect tarafından FiniteDuration işleminizse kullanım durumuna bağlı olarak çeşitli varyantlar olmasına rağmen Ardından, kontrol edebilirsiniz.

+2

Mükemmel, teşekkürler! Yorumunuzu görmeden önce şunu yaptım: 'Duration.apply (myString) .asInstanceOf [FiniteDuration]' ancak bu, myString'in her zaman sonlu bir süreye işaret edeceğini ima eder, bu yüzden kurşun geçirmez değildir. – user2916547