gpt4 book ai didi

scala - Scala self 类型可以强制执行案例类类型吗

转载 作者:行者123 更新时间:2023-12-04 19:52:51 26 4
gpt4 key购买 nike

在 Scala 中有什么方法可以将特征的 self 类型定义为案例类,如“任何案例类”?我想要一个 self 类型能够使用 .copy案例类的方法,强制其自身类型是某个案例类而不是常规类。我认为,结构类型无济于事,因为它们需要一个包含特定参数的签名(对于任何 case 类,我可能不能一般地使用结构类型)。

请放弃“如果你需要,你一定是做错了什么”,因为我已经继续前进了,但我的 api 设计 - 如果上述可能的话,会更光滑。我也很好奇下次再来。

最佳答案

这仅适用于(如您所建议的)结构类型,并且仅适用于固定的已知案例类参数类型序列(您需要 copy 的确切签名)。例如:

trait InCase[Repr] {
self: { def copy(foo: Int): Repr } =>

def test(foo: Int): Repr = copy(foo)
}

case class Fail(foo: Int, bar: String) extends InCase[Fail] //illegal inheritance

case class Succeed(foo: Int) extends InCase[Succeed]

Succeed(123).test(456)

关于scala - Scala self 类型可以强制执行案例类类型吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33674602/

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