所以我有以下課程:
class MyClass[T] {
var data: T = _
def isEven: Boolean = {
if (this.data % 2 == 0) return true
false
}
}
Scala 不允許我在這里取模,因為不能保證型別“T”是數字的。
所以我的問題是我該如何運行它?我想讓 MyClass 擁有任何型別的數字資料型別,如 Int、Float、Double 等
uj5u.com熱心網友回復:
有一個名為 的型別類Numeric,位于 package 中scala.math。此類提供了一些功能,數字(如 Int、Double、...)必須具有,例如,它們可以被否定,或者它們必須能夠轉換為 Int,以及許多其他功能,請參閱此處的檔案。
所以我建議你這樣做:
import scala.math.Numeric
class MyClass[T : Numeric] {
var data: T = _
private final val num: Numeric[T] = implicitly
def isEven: Boolean = num.toDouble(data) % 2 == 0
}
Scala 已經實作Numeric了一些型別,例如 Int、BigInt、Char、BigDecimal 等。因此,如果您使用其中一種標準型別,您會很好,但如果您打算使用您自己定義的某種型別,請考慮實作Numeric[YourType].
另外,盡量不要使用var.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/480195.html
