我对 Scala (特别是 Scala 3)有点陌生 - 所以我知道下面的问题可能是愚蠢的/na\xc3\xafve。
\n我知道下面的多态方法类型是有效的。
\ndef zeroMethod[A:Numeric] = Numeric[A].zero\nRun Code Online (Sandbox Code Playgroud)\n这里 Numeric 是泛型类型 A 上绑定的上下文。
\n请注意,\n scala> zeroMethod[Int]\n产量val res0: Int = 0。或者借助类型推断:
scala> val a = zeroMethod[Int]\nval a: Int = 0\nRun Code Online (Sandbox Code Playgroud)\n对此的稍微扩展是
\ndef zeroMethodFromVal[A:Numeric](x : A) = Numeric[A].zero \nRun Code Online (Sandbox Code Playgroud)\n该参数提供的唯一真正用途x是它有助于类型推断。
具体来说,
\nscala> zeroMethodFromVal(5)\nval res1: Int = 0\nRun Code Online (Sandbox Code Playgroud)\n从那时起,我想编写一个反映多态方法类型行为的多态函数类型。
\n如何向多态函数类型添加上下文边界?或者这是不可能的,因为上下文边界只是传递隐式参数的语法糖?
\n当我尝试创建一个与 等价的函数时zeroMethod,它给了我各种各样的错误......有些偏离了当前的主题。因此,我将省略该特定的代码片段。然而,似乎应该可以制作一个等效的函数zeroMethodFromVal,并且不会分散当前主题的注意力。
具体来说,我的(第一次)尝试是:
\n …