У меня есть немного синтаксического сахара для операций, которые зависят от объекта:
case class EllipticOperand (p : Point)
{
def + (q : => Point) = curve.sum(p,q)
def * (n : => BigInt) = curve.times(p,n)
}
implicit def PointToOperand(p : Point) = EllipticOperand(p)
case class EllipticMultiplier (n : BigInt)
{
def * (p : => Point) = curve.times(p,n)
}
implicit def BigIntToOperand (n : BigInt) = EllipticMultiplier(n)
Я хотел бы инкапсулировать некоторые class SyntacticSugar[Point](curve : main.Curve[Point])
, чтобы использовать их в определениях других классов без необходимости копировать/вставлять их.
Я пытался использовать его таким образом:
val sugar = new util.SyntacticSugar(curve)
import sugar._
Однако это не работает, я не могу использовать +
и *
после.
trait
не поддерживает параметры, и мой синтаксический сахар каждый раз зависит от конкретной кривой. Кстати, спасибо. - person Théo Winterhalter   schedule 20.06.2014SyntacticSugar
следующим образом:class SyntacticSugar[Point](curve : main.Curve[Point])
? Итак,Point
в приведенном выше фрагменте кода - это не класс, а параметр типа? - person Jasper-M   schedule 20.06.2014Point
действительно является параметром типа, ноcurve
— это объект. - person Théo Winterhalter   schedule 20.06.2014