我有一个函数,它接受可变数量的参数.第一个是String,其余是数字(Int或Double),所以我使用Any*来获取参数.我想将数字统一地视为双打,但我不能在数字参数上使用asInstanceOf [Double].例如:
val arr = Array("varargs list of numbers", 3, 4.2, 5)
val d = arr(1).asInstanceOf[Double]
Run Code Online (Sandbox Code Playgroud)
得到:
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Double
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?(该功能需要添加所有数字).
ScalaasInstanceOf
是它的铸造名称。铸造不是转换。
你想要的可以这样完成:
val mongrel = List("comment", 1, 4.0f, 9.00d)
val nums = mongrel collect { case i: Int => i case f: Float => f case d: Double => d }
val sumOfNums = nums.foldLeft(0.0) ((sum, num) => sum + num)
Run Code Online (Sandbox Code Playgroud)