Scala'da herhangi bir sayısal türle karşılaştırıldığında ve karşılaştırmaları yapan bir sınıf nasıl oluşturulur?Scala'nın Sayısal türleri ile karşılaştırmalar?
Bariz yaklaşım:
import math.Numeric.Implicits._
class Ops[T : Numeric] {
def add(a: T, b: T) = a + b
def gt(a: T, b: T) = a > b
}
bana bu kazanır ...
Ops.scala:7: value > is not a member of type parameter T
Hmmm ... biz sayısal türleri ile matematik yapabilirsiniz, ama biz onları karşılaştırmak olamaz?
Yani ... en deT
Ordered[T]
olduğunu söylemek derler
class Ops[T <: Ordered[T] : Numeric] {
def add(a: T, b: T) = a + b
def gt(a: T, b: T) = a > b
}
edelim. Ama kullanmayı dene?
new Ops[Int].gt(1, 2)
Ve olsun ...
Ops.scala:13: type arguments [Int] do not conform to class Ops's type parameter bounds [T <: Ordered[T]]
yüzden de sipariş ve sayısal bazı türüne çalışabilir nasıl?
Nice, bu tür bir global içe aktarmanın, yerel import 'numeric.mkXXXOps' seçeneğinin aksine farkında değildi. Bunu kullanacak. –
'Numeric'' Sipariş’i genişletir, bu nedenle 'Sipariş' bağlam sınırlarını istemek gereksizdir! 'T: Numeric' yeterlidir. –
@Sciss: Haklısınız. Düzenlendi, teşekkürler. – missingfaktor