【问题标题】:How do I setup multiple type bounds in Scala?如何在 Scala 中设置多个类型边界?
【发布时间】:2009-09-29 08:34:10
【问题描述】:

我希望能够像这样声明:

trait Narrowable[A] extends Iterable[A] {

    def narrow[B <: A & B <: AnyRef] : Iterable[B]

}

也就是说,B 类型应该是A 的子类型 AnyRef。这可能吗?

【问题讨论】:

    标签: generics scala


    【解决方案1】:

    使用复合类型:

    trait Narrowable[A] extends Iterable[A] {
      def narrow[B <: A with AnyRef] : Iterable[B]
    }
    

    【讨论】:

    • 同样的交易,挖金子,多年后发现 Walter Chang 富有洞察力的回复;-)
    • @Walter Chang 或/两个上限中的任何一个 def narrow[B &lt;: A | B &lt;: AnyRef] : Iterable[B]
    • @PushpendraJaiswal 你最好的选择可能是简单地使用Either[A, AnyRef] 而不是输入边界。
    • 如果你需要一个上限和一个上下文边界怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2013-12-25
    • 1970-01-01
    • 2021-01-24
    • 2020-07-22
    相关资源
    最近更新 更多