gpt4 book ai didi

scala - 为什么 Numeric 对待一元和二进制的方式不同?

转载 作者:行者123 更新时间:2023-12-02 06:36:10 26 4
gpt4 key购买 nike

这是怎么回事?

import Numeric.Implicits._

def myAdd[T: Numeric](x: T, y: T) = x + y // Works
myAdd(1,2)

def myInc[T: Numeric](x: T) = x + 1 // Fails at x: could not find implicit value for parameter num: scala.math.Numeric[Any]
myInc(9)

斯卡拉 2.10

与 x+1 有关 --> Numeric+Int?

最佳答案

所以看了http://www.scala-lang.org/api/current/#scala.math.Numeric之后看到 onefromInt,我在 REPL 中摆弄了一下,想出了:

scala> def myInc[T: Numeric](x: T) = x + implicitly[Numeric[T]].fromInt(1)
myInc: [T](x: T)(implicit evidence$1: Numeric[T])T

scala> myInc(9)
res1: Int = 10

scala> def myInc[T: Numeric](x: T) = x + implicitly[Numeric[T]].one
myInc: [T](x: T)(implicit evidence$1: Numeric[T])T

scala> myInc(9)
res2: Int = 10

它与它是一个只有一个参数的方法无关,而是与编译器将 T 类型推断为 Any 相关。

关于scala - 为什么 Numeric 对待一元和二进制的方式不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18325927/

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