scala – 如何将任何数字转换为long
发布时间:2020-12-16 09:02:23 所属栏目:安全 来源:网络整理
导读:假设我有: val number:AnyVal 我知道x可以是任何数字(对于我们的目的,一个Float,Double,Int,Long). 将这样的数字转换为Long的最简单方法是什么: val l = number.toLong //fails for AnyVal 解决方法 怎么样: scala import scala.util.Tryimport scala.uti
假设我有:
val number:AnyVal 我知道x可以是任何数字(对于我们的目的,一个Float,Double,Int,Long). 将这样的数字转换为Long的最简单方法是什么: val l = number.toLong //fails for AnyVal 解决方法
怎么样:
scala> import scala.util.Try import scala.util.Try scala> val i1: Int = 23 i1: Int = 23 scala> val l1: Long = 42 l1: Long = 42 scala> val f1: Float = 14.9f f1: Float = 14.9 scala> val d1: Double = 14.96 d1: Double = 14.96 scala> val b1: Boolean = true b1: Boolean = true scala> List(i1,l1,f1,d1,b1) map (x => Try(x.asInstanceOf[Number].longValue)) foreach (println(_)) Success(23) Success(42) Success(14) Success(14) Failure(java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.Number) scala> List(i1,b1) map (x => Try(x.asInstanceOf[Number].longValue)) foreach (n => println(n.get)) 23 42 14 14 java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.Number at $anonfun$1$$anonfun$apply$1.apply$mcJ$sp(<console>:14) at $anonfun$1$$anonfun$apply$1.apply(<console>:14) at $anonfun$1$$anonfun$apply$1.apply(<console>:14) at scala.util.Try$.apply(Try.scala:161) at $anonfun$1.apply(<console>:14) at $anonfun$1.apply(<console>:14) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) at scala.collection.immutable.List.foreach(List.scala:318) at scala.collection.TraversableLike$class.map(TraversableLike.scala:244) at scala.collection.AbstractTraversable.map(Traversable.scala:105) at .<init>(<console>:14) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |