簡體   English   中英

如何編寫一個方法來在Scala中獲取任意類

[英]How to write a method to take arbitrary classes in Scala

編寫一個對任何定義了加法運算的類進行操作的方法的正確方法是什么?

我想象它就像是

def trajectory[A <: {def +(a:A):A}](a:A): A = {
    a + a
}

但它不起作用。

我會選擇一個類型

trait Semigroup[A] {
  def mappend(a0: A, a: A): A
}

object Semigroup {
  implicit val intAdditionSemigroup: Semigroup[Int] = new Semigroup[Int] {
    override def mappend(a0: Int, a: Int): Int = a0 + a
  }
}

如果要使用它,可以將其作為類型參數的隱式約束添加:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM