我用的方法嘗試在斯卡拉這是試圖取決於他們是多麼大的圓號碼,例如如果該值低於1,則將其舍入至少一個小數點是有意義的;而不是保留一個整數。這裏就是我想:取整數值參數類型斯卡拉
def roundSmart[A](num: A)(implicit numeric: Numeric[A]) = num match {
case num if num < 1 => numeric.toDouble(num)
case _ => numeric.toInt(num)
}
會拋出這個錯誤:
value < is not a member of type parameter A
當然的參數需要接受函數簽名以內的範圍參數類型的,因爲它可能採取整數或雙打,這增加了更多的複雜性。
我已經採取了條件聲明第一情況從這個答案 - Using comparison operators in Scala's pattern matching system並很渴望使用函數式編程方法。也許還有一些內置的scala函數,如Math.round()
可能有助於將第二個條件四捨五入,而不是刪除任何小數。謝謝!
'math.round'並在斯卡拉存在 –