`
bit1129
  • 浏览: 1051424 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Scala十九】关于function入参类型逆变,返回结果协变

 
阅读更多
class CSuper {

}

class C extends CSuper {

}

class C2 extends  CSuper {

}

class CSub  extends  C {

}

object Scala8 {

  /***
    * 
    * @return
    */
    val func1 : C=>C = (c : CSuper) => new CSub
    val func2 : C=>C = (c : C) => new C
    //val func3: C=>C = (c: CSub) => new C
    //val fun4:C=>C = (c:C2)=>new C
     def main(args : Array[String]): Unit = {
     }
}

 

因为func1的返回值是C=>C,那么func1()(XXX),那么XXX必须是C或者C的子类型,    C或者C的子类型必然可以转换为CSuper,就是说,XXX对象可以作为(c:CSuper)=>new CStub的入参。

 

但是XXX对象不能转型为为CSub或者C2,所以func3,func4是有编译错误的

 

fun1,func2都是函数字面量,该函数字面量的类型签名是Function2[-C,+C],即函数的(唯一)参数是逆变,而返回值是协变。

 

val func1 : C=>C = (c : CSuper) => new CSub

如上定义,func1的声明类型是C=>C,实际定义的类型是 (c : CSuper) => new CSub

 

分享到:
评论

相关推荐

    function programming in scala 英文原版 scala函数式编程

    英文原版 scala函数式编程 function programming in scala

    scala课件.zip

    Scala概述.pptx 变量.pptx 运算符.pptx 程序流程控制.pptx 函数式编程基础.pptx 面向对象编程(基础部分).pptx ...泛型 上下界 视图界定 上下文界定 协变逆变不变.pptx AKKA.pptx 韩顺平_Scala语言核心编程.pdf

    Scala.uew UltraEdit关于Scala的wordfiles

    这个是UltraEdit编辑器中的关于Scala的高亮文件类型。

    scala_function.sh

    scala_function.sh

    Scala程序设计(第2版)

    第1章 零到六十:Scala简介 1 1.1 为什么选择Scala 1 1.1.1 富有魅力的Scala 2 1.1.2 关于Java 8 3 1.2 安装Scala 3 1.2.1 使用SBT 5 1.2.2 执行Scala命令行工具 6 1.2.3 在IDE中运行Scala ...

    Scala函数式编程

    4 多态的具体化,尤其是协变的意义所在 5 各种重载的符号使用 之前读过 programming in scala,对语言的整体还停留在: 1 scala用起来比java更灵活 2 强大的collection,可以更加方便的处理collection类的数据 ...

    scala sdk scala-2.12.3

    scala-2.12.3 scala-2.12.3 scala-2.12.3 scala-2.12.3

    快学 scala 中文版 带完整目录

    18.10 协变和逆变点 305 18.11 对象不能泛型 307 18.12 类型通配符 308 练习 309 第19章 高级类型 L2 313 19.1 单例类型 313 19.2 类型投影 315 19.3 路径 316 19.4 类型别名 317 19.5 结构类型 318 19.6 ...

    scala-sbt-scala编译工具

    scala 编译工具 sbt 安装包。 Little or no configuration required for simple projects Scala-based build definition that can use the full flexibility of Scala code Accurate incremental recompilation ...

    scala编程中文pdf

    scala编程 33章 中文pdf Scala编程实战 目录 第1章字符串. 11 第2章数值39 第3章控制结构.60 第4章类和属性.103 第5章方法147 第6章对象170 第7章包和导入.190 第8章特质200 第9章函数式编程214 第10 章集合242 第...

    scala2.12.1Windows镜像包

    scala2.12.1Windows镜像包

    scala3 scala3 scala3 scala3 scala3

    scala3 scala3 scala3 scala3 scala3

    UltraEdit编辑器中的可以使Scala文本高亮文件类型

    比较冷门的UltraEdit编辑器中的关于Scala的高亮文件类型wordfile,使用方法,下载好的scala.uew文件放入UltraEdit编辑器所在目录下的worldfiles文件夹下面,然后进入UltraEdit编辑器设置中 高级--》设置--》编辑器...

    Scala编程实战.zip

    此文档是讲解实战Scala,希望对喜欢大数据的同学有所帮助!!! 学习Scala语言,不仅仅意味着熟悉新的API,更重要的是一种思维方式的转变。从原有的面向对象编程(OO)到函数式编程(FP)的思想。本书面向实际的使用场景...

    Scala集合类型.md

    Scala集合类型.md

    Scala 数据类型 图表VISIO格式

    Scala 数据类型

    Scala类型参数.md

    Scala类型参数.md

    scala 安装包

    scala 安装包scala 安装包scala 安装包scala 安装包scala 安装包scala 安装包

    scala SDK 2.10下载

    scala SDK 2.10下载scala SDK 2.10下载scala SDK 2.10下载scala SDK 2.10下载scala SDK 2.10下载scala SDK 2.10下载scala SDK 2.10下载scala SDK 2.10下载scala SDK 2.10下载scala SDK 2.10下载scala SDK 2.10下载...

Global site tag (gtag.js) - Google Analytics