如何编写在Scala中获取任意类的方法

如何编写在Scala中获取任意类的方法,scala,structural-typing,Scala,Structural Typing,编写在任何类上操作的方法的正确方法是什么 是否定义了加法操作 我以为是这样的 def trajectory[A <: {def +(a:A):A}](a:A): A = { a + a } def轨迹[A我会选择: 如果要使用它,可以将其作为隐式约束添加到类型参数上: def foo[A](a0: A, a: A)(implicit semigroup: Semigroup[A]): A = { semigroup.mappend(a0, a) } def foo[A](a

编写在任何类上操作的方法的正确方法是什么 是否定义了加法操作

我以为是这样的

def trajectory[A <: {def +(a:A):A}](a:A): A = {
    a + a
}
def轨迹[A我会选择:

如果要使用它,可以将其作为隐式约束添加到类型参数上:

def foo[A](a0: A, a: A)(implicit semigroup: Semigroup[A]): A = {
  semigroup.mappend(a0, a)
}
def foo[A](a0: A, a: A)(implicit semigroup: Semigroup[A]): A = {
  semigroup.mappend(a0, a)
}