Scala进阶27-List中的上界、下界、逆变、协变

原创 2016年08月30日 00:20:51
abstract class Big_Data
class Hadoop extends Big_Data
class Spark extends Big_Data

/**
  * ::是中值表达式
  * def ::[B >: A] (x: B): List[B] =
  * new scala.collection.immutable.::(x, this)
  * A是以B为上界的,或者说B是以A为下界的。返回是上界B,list是协变的,函数的参数(x:B)其实是逆变的。
  * 函数的参数时逆变的,就不能保持函数的返回结果类型是协变的了。使得list可以容纳具体的上界的所有子类型。
  */
object List_Constructor_Internals {
  //hadoop: List[Hadoop] = List(Hadoop@483f6d77)
  val hadoop = new Hadoop :: Nil

  //big_Data: List[Big_Data] = List(Spark@f58853c, Hadoop@483f6d77)
  val big_Data = new Spark :: hadoop
  //等同于这样写
  val big_data1 = hadoop.::(new Spark)
}

相关文章推荐

scala中的上界、下界、协变和逆变

class Pet(val name:String){ override def toString()=name } class Dog(override val name:String) exten...

scala-协变、逆变、上界、下界

阅读目录 Scala的协变 Scala的逆变 下界lower bounds 上界upper bounds View Bound

Scala协变逆变上界下界

这里介绍一下关于scala中的协变逆变的有关知识,因为真的每次碰见都懵逼的感觉很难受。此处我不会对比Java中的相关协变逆变,只针对scala的进行讲解。 首先我说一下协变,所谓协变,白话文就是说让你...

Programming In Scala笔记-第十九章、类型参数,协变逆变,上界下界

本章主要讲Scala中的类型参数化。本章主要分成三个部分,第一部分实现一个函数式队列的数据结构,第二部分实现该结构的内部细节,最后一个部分解释其中的关键知识点。接下来的实例中将该函数式队列命名为Que...

Scala类型参数中协变(+)、逆变(-)、类型上界(<:)和类型下界(>:)的使用

原文地址:http://fineqtbull.iteye.com/blog/477994 有位je上的同学来短信向我问起了Scala类型参数中协变、逆变、类型上界和类型下界的使用方法和原理,自己...

scala协变逆变上界下界---理解篇

如果你对面向对象的泛型bt

Scala中的协变,逆变,上界,下界等

目录 [−] Java中的协变和逆变 Scala的协变 Scala的逆变 下界lower bounds 上界upper bounds 综合协变,逆变,上界,下界 Vi...

Scala中协变(+)、逆变(-)、上界(<:)、下界(>:)简单介绍

对于一个带类型参数的类型,比如 List[T],如果对A及其子类型B,满足 List[B]也符合List[A]的子类型,那么就称为covariance(协变) , 如果 List[A]是 Lis...

第81讲:Scala中List的构造时的类型约束逆变、协变、下界详解学习笔记

第81讲:Scala中List的构造时的类型约束逆变、协变、下界详解学习笔记 本讲主要讲解Scala中List的构造时的类型约束背后的运行机制 一,List的::和:::详解 二,List中的逆...
  • slq1023
  • slq1023
  • 2015年08月09日 23:26
  • 316

Scala 数据类型的协变、逆变、上边界、下边界

先说说协变和逆变(实际上还有非变)。协变和逆变主要是用来解决参数化类型的泛化问题。由于参数化类型的参数(参数类型)是可变的,当两个参数化类型的参数是继承关系(可泛化),那被参数化的类型是否也可以泛化呢...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Scala进阶27-List中的上界、下界、逆变、协变
举报原因:
原因补充:

(最多只允许输入30个字)