gpt4 book ai didi

scala - 如何从类型中检索伴随对象

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

我想编写一个泛型方法,我需要从类型中检索伴随对象(尤其是 apply 方法)。

[update] X 是一个案例类,所以伴随对象有一个 apply 方法。

例如:def f[X]() = X.apply("42")

最佳答案

没有通用的解决方案,也没有限制伴生对象有 apply 方法。无需申请即可成为伴侣。在这种情况下,我建议使用类型类模式。

  trait CompanionWithApply[T] {
def apply(s: String): T
}

class X(s: String)
object X extends CompanionWithApply[X] {
def apply(s: String): X = new X(s)
}

class Y(s: String)
object Y extends CompanionWithApply[Y]{
def apply(s: String): Y = new Y(s)
}

implicit val XCompanion = X
implicit val YCompanion = Y

def f[T: CompanionWithApply] = implicitly[CompanionWithApply[T]].apply("42")

println(f[X])
println(f[Y])

关于scala - 如何从类型中检索伴随对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26302774/

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