• 技术文章 >后端开发 >php教程

    [Scala之旅]3-统一类型 - TOUR OF SCALA 思否

    不言不言2018-03-30 14:25:25原创870
    在Scala中,所有值都有一个类型,包括数值和函数。下图演示了类型层次结构的一个子集。

    php入门到就业线上直播课:进入学习

    Scala类型层次结构

    Any 类型是所有类型的父类型,也称为顶级类型。它定义了一些通用的方法,如 equalshashCodetoStringAny 有两个直接子类:AnyValAnyRef

    AnyVal 代表值类型。有9种预定义的值类型,它们是不可为空的:DoubleFloatLongIntShortByteCharUnitBooleanUnit 是一个不具备任何意义的值类型。Unit 只有一个实例可以像这样声明:()。所有函数都必须返回某个值,因此 Unit 是一个有用的返回类型。

    AnyRef 表示引用类型。所有的非值类型都被定义为引用类型。Scala中的每个用户定义类型都是 AnyRef 的子类型。如果Scala是在Java运行时环境中使用的,那么 AnyRef 对应于 Java.lang.object

    这里有一个例子,它演示了字符串、整数、字符、布尔值和函数都是与其他对象一样的对象:

    val list: List[Any] = List(
      "a string",
      732,  // an integer
      'c',  // a character
      true, // a boolean value
      () => "an anonymous function returning a string"
    )
    
    list.foreach(element => println(element))

    它定义了类型 List[Any] 的变量列表。这个列表是用各种类型的元素初始化的,但是它们都是 scala.Any 的实例,所以你可以把它们都添加到列表中。

    下面是程序的输出:

    a string
    732
    c
    true
    <function>

    类型转换

    值类型可以通过以下方式进行转换:

    例如:

    val x: Long = 987654321
    val y: Float = x  // 9.8765434E8 (note that some precision is lost in this case)
    
    val face: Char = '☺'
    val number: Int = face  // 9786

    转换是单向的。下面最后一条语句将无法通过编译:

    val x: Long = 987654321
    val y: Float = x  // 9.8765434E8
    val z: Long = y  // Does not conform

    你还可以将引用类型转换为子类型。这将在之后的文章中被介绍。

    Nothing和Null

    Nothing 是所有类型的子类型,也称为底部类型。类型 Nothing 是没有值的。常见的用途是发出非终止信号,例如抛出异常、程序退出或无限循环(即,它是一种没有对值进行求值的表达式,或者是一种不返回正常值的方法)。

    Null 是所有引用类型的子类型(即 AnyRef 的任何子类型)。它有一个由关键字 null 标识的单一值。Null 主要用于与其他JVM语言的互操作性,并且几乎不应该在Scala代码中使用。我们将在稍后的文章中介绍 null 的替代方案。

    以上就是[Scala之旅]3-统一类型 - TOUR OF SCALA 思否的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:Scala TOUR 类型
    上一篇:[Scala之旅]2-基础 - TOUR OF SCALA 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• PHP底层的运行机制与原理_PHP教程• 说一说PHP程序开发中的模板选择_PHP• 程序修改有关问题• js表单提交解决方法• 极奇怪的,晓得bug在哪里,但不知道为何会出现这bug
    1/1

    PHP中文网