• 【scala】下划线用法总结


    1. 用于变量的初始化

    在Scala中,变量在声明时必须显示指定,可以使用下划线对变量进行初始化。而且该语法只适用于成员变量,不适用于局部变量。例:
    在这里插入图片描述

    对于Int来说,它是0。
    对于Double来说,它是0.0
    对于引用类型,它是null

    2. 用于导包引入

    导包引入时使用_导入该包下所有内容,类比Java中的*。例如:
    在这里插入图片描述

    3. 用于将方法转变为函数

    在Scala中方法不是值,而函数是。所以一个方法不能赋值给一个val变量,而函数可以。方法可以转换为函数赋值给变量,例:

    在这里插入图片描述

    4. 用于模式匹配

    模式匹配中可以用下划线来作为Java中default的类比使用,也可以在匹配集合类型时,用于代表集合中元素,例:
    在这里插入图片描述

    5. 用户访问tuple元素

    在这里插入图片描述

    6. 下划线与星号

    向函数或方法传入可变参数时不能直接传入Range或集合或数组对象,需要使用:_*转换才可传入

    6.1 变长参数

    例如定义一个变长参数的方法sum,然后计算1-5的和,可以写为

    scala> def sum(args: Int*) = {
         | var result = 0
         | for (arg <- args) result += arg
         | result
         | }
    sum: (args: Int*)Int
    ​
    scala> val s = sum(1,2,3,4,5)
    s: Int = 15
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    但是如果写成这种方式就会报错

    scala> val s = sum(1 to 5)
    <console>:12: error: type mismatch;
     found : scala.collection.immutable.Range.Inclusive
     required: Int
           val s = sum(1 to 5)
                         ^
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这种情况必须在后面写上: _*将1 to 5转化为参数序列

    scala> val s = sum(1 to 5: _*)
    s: Int = 15
    
    • 1
    • 2

    6.2 变量声明中的模式

    下面代码分别将arr中的第一个和第二个值赋给first和second

    scala> val arr = Array(1,2,3,4,5)
    arr: Array[Int] = Array(1, 2, 3, 4, 5)
    ​
    scala> val Array(first, second, _*) = arr
    first: Int = 1
    second: Int = 2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    CMD命令终端快捷键学习
    SeaweedFS安全配置(Security Configuration)
    Hudi从内核到实战介绍
    SpringBoot实用开发篇第六章(整合第三方技术,ActiveMQ,RabbitMQ,RocketMQ,Kafka)
    小程序真机调试提示系统错误
    websocket
    【JavaEE进阶序列 | 从小白到工程师】JavaEE中的面向对象特征之封装
    IntelliJ IDEA中构建Spring Boot的项目
    前端周刊第三十七期
    ctrl+k,ctrl+l无法切换到时限文件
  • 原文地址:https://blog.csdn.net/weixin_44441131/article/details/126072735