gpt4 book ai didi

scala - 更多关于通用 Scala 函数的信息

转载 作者:行者123 更新时间:2023-12-03 11:46:39 25 4
gpt4 key购买 nike

尝试在 Scala 中实现以下 Haskell 函数(来自 Learn You a Haskell...),以便它与 Int、Double 等一起使用。

doubleUs x y = x * 2 + y * 2 

请注意,这类似于 Scala: How to define "generic" function parameters?

这是我的尝试和错误。有人可以解释发生了什么并提供解决方案。谢谢。
scala> def doubleUs[A](x:A,y:A)(implicit numeric: Numeric[A]): A = numeric.plus(numeric.times(x,2),numeric.times(y,2)) 
<console>:34: error: type mismatch;
found : Int(2)
required: A
def doubleUs[A](x:A,y:A)(implicit numeric: Numeric[A]): A = numeric.plus(numeric.times(x,2),numeric.times(y,2))

最佳答案

除了@Dylan 所说的,您可以通过将Numeric 的内容导入范围来使它看起来不那么乏味。隐式如下图:

scala> def doubleUs[N](x: N, y: N)(implicit ev: Numeric[N]) = {
| import ev._
| x * fromInt(2) + y * fromInt(2)
| }
doubleUs: [N](x: N, y: N)(implicit ev: Numeric[N])N

scala> doubleUs(3, 4)
res9: Int = 14

scala> doubleUs(8.9, 1.2)
res10: Double = 20.2

关于scala - 更多关于通用 Scala 函数的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7337582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com