gpt4 book ai didi

scala - 你能为抽象类型指定一个 View 吗?

转载 作者:行者123 更新时间:2023-12-01 10:06:47 25 4
gpt4 key购买 nike

my answerthis question , 我很惊讶以下代码不起作用。

scala> abstract class Foo {
| type Repr_Tpe <% Ordered[Repr_Tpe]
| }

<console>:2: error: `=', `>:', or `<:' expected

OP 说用类型参数替换抽象类型不是一个选项。有什么方法可以表达绑定(bind)到抽象类型的 View 吗?

最佳答案

当然有。 View 绑定(bind) A <% B在类型参数上只是“类型为 A => B 的隐式值参数”的糖。那么,您想要的是:

abstract class Foo {
type Repr_Tpe
implicit def orderify: (Repr_Tpe => Ordered[Repr_Tpe])
}

当然,实现必须提供 orderify 的实际实现同时他们指定类型。大概是这样的

class Bar extends Foo {
type Repr_Tpe = Int
val orderify = implicitly[Int => Ordered[Int]]
}

class Baz[A <% Ordered[A]] extends Foo {
type Repr_Tpe = A
val orderify = implicitly[A => Ordered[A]]
}

关于scala - 你能为抽象类型指定一个 View 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9469486/

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