小编Dav*_*lds的帖子

Scala3 中多态函数类型的上下文边界?

设置:

\n

我对 Scala (特别是 Scala 3)有点陌生 - 所以我知道下面的问题可能是愚蠢的/na\xc3\xafve。

\n

我知道下面的多态方法类型是有效的。

\n
def zeroMethod[A:Numeric] = Numeric[A].zero\n
Run Code Online (Sandbox Code Playgroud)\n

这里 Numeric 是泛型类型 A 上绑定的上下文。

\n

请注意,\n scala> zeroMethod[Int]\n产量val res0: Int = 0。或者借助类型推断:

\n
scala> val a = zeroMethod[Int]\nval a: Int = 0\n
Run Code Online (Sandbox Code Playgroud)\n

对此的稍微扩展是

\n
def zeroMethodFromVal[A:Numeric](x : A) = Numeric[A].zero \n
Run Code Online (Sandbox Code Playgroud)\n

该参数提供的唯一真正用途x是它有助于类型推断。

\n

具体来说,

\n
scala> zeroMethodFromVal(5)\nval res1: Int = 0\n
Run Code Online (Sandbox Code Playgroud)\n

从那时起,我想编写一个反映多态方法类型行为的多态函数类型。

\n

如何向多态函数类型添加上下文边界?或者这是不可能的,因为上下文边界只是传递隐式参数的语法糖?

\n

当我尝试创建一个与 等价的函数时zeroMethod,它给了我各种各样的错误......有些偏离了当前的主题。因此,我将省略该特定的代码片段。然而,似乎应该可以制作一个等效的函数zeroMethodFromVal,并且不会分散当前主题的注意力。

\n

具体来说,我的(第一次)尝试是:

\n …

generics lambda scala polymorphic-functions

1
推荐指数
1
解决办法
90
查看次数

标签 统计

generics ×1

lambda ×1

polymorphic-functions ×1

scala ×1