【问题标题】:Addition with generic type parameter in Scala在 Scala 中添加泛型类型参数
【发布时间】:2010-01-20 04:35:04
【问题描述】:

您好,我是 scala 的新手,正在尝试使用泛型类型参数编写加法程序,如下所示

object GenericTest extends Application {
  def func1[A](x:A,y:A) :A = x+y    
    println(func1(3,4))
}

但这不起作用。我犯了什么错误。

【问题讨论】:

  • 你真的需要多说一些关于你想要完成什么以及你到底尝试了什么。
  • 这实际上是 stackoverflow.com/questions/485896/… 的副本。
  • 您好,感谢您的回答。 Randall - 我只是想玩泛型类型,并尝试在我传递给函数的所有内容上使用“+”运算符,例如 string+string 、int+int、double+double

标签: scala


【解决方案1】:

A 在这种情况下可以是任何类型。 x + y 表示 x.+(y),仅当 a) A 类型具有方法 +,或 b) 类型 A 可隐式转换为具有方法 + 的类型时,才会编译。

scala.Numeric 类型提供了编写对数字系统进行抽象的代码的能力——它可以用 Double、Int 甚至您自己的奇特数字系统(例如复数)调用。

您可以在Numeric[A] 类型的方法中添加一个隐式参数。

object GenericTest extends Application {
  def func1[A](x: A, y: A)(implicit n: Numeric[A]): A = x + y    
}

在 Scala 2.8 中,这可以缩短:

object GenericTest extends Application {
  def func1[A: Numeric](x: A, y: A): A = x + y    
}

【讨论】:

【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多