加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala中的[B>:A]做什么?

发布时间:2020-12-16 09:33:17 所属栏目:安全 来源:网络整理
导读:Scala中的[B:A]是什么意思?还有什么效果? 示例参考:http://www.scala-lang.org/node/129 class Stack[+A] { def push[B : A](elem: B): Stack[B] = new Stack[B] { override def top: B = elem override def pop: Stack[B] = Stack.this override def to
Scala中的[B>:A]是什么意思?还有什么效果?

示例参考:http://www.scala-lang.org/node/129

class Stack[+A] {
    def push[B >: A](elem: B): Stack[B] = new Stack[B] {
        override def top: B = elem
        override def pop: Stack[B] = Stack.this
        override def toString() = elem.toString() + " " + Stack.this.toString()
    }
    def top: A = error("no element on stack")
    def pop: Stack[A] = error("no element on stack")
    override def toString() = ""
}

object VariancesTest extends Application {
    var s: Stack[Any] = new Stack().push("hello");
    s = s.push(new Object())
    s = s.push(7)
    println(s)
}

解决方法

[B>:A]是较低类型的绑定。这意味着B被限制为A的超类型。

类似地,[B <:A]是上限类型,意思是B被限制为A的子类型。 在您所示的示例中,您可以将B类元素推送到包含A元素的堆栈中,但结果是一组B元素。 您看到的页面实际上有一个链接到另一个页面大约lower type bounds,其中包括一个示例显示效果。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读