Scala -- Scala中“_“的用法总结(持续更新)

scala中_的作用 1、初始化时 object Sample { var name:String=_ def main (args: Array[String]){ name="hello world" println(name) } 这里的_和null的作用一样 2、引入时 import math._ object Sample { def main 阅读详情

1. 导包时,多引用的方法,和java中的*类似

例如:

import scala.collection.mutable._

2. 访问元组时,和值一起使用表示第几个元素

例如:

val/var 元组名 = (元素1, 元素2, 元素3....)
//获取第一个元素
元组名._1
//获取第二个元素
元组名._2

3. 在方法转函数时,在方法名后面用<空格>加 ‘_’ 来进行转换

例如:

def method1(x:Int,y:Int):Int = x+y
val f2 = method1<空格>_

在这里插入图片描述

4. 根据类型的初始值进行的占位符

例如:

var gender:String = _

5. 使用下划线来简化函数定义

当函数参数,只在函数体中出现一次,而且函数体没有嵌套调用时,可以使用下划线来简化函数定义
例如:

def main(args: Array[String]): Unit = {
    val a = List(1,2,3,4,5)
//    a.foreach(x=>println(x))
    a.foreach(println(_))
}

这里下划线可替代 x=>println(x),

• 如果方法参数是函数,如果出现了下划线,scala编译器会自动将代码封装到一个函数中
• 参数列表也是由scala编译器自动处理
例二:

 def main(args: Array[String]): Unit = {
    val a = List(1,2,3,4,5)
//    println(a.map(x=>x+1))
    println(a.map(_ + 1))
  }

6. 用于元素匹配

例如:

List(1,2,3,4,5,6,7,8,9).filter(_ % 2 == 0)

匹配每个元素,得出满足条件的列表

7. 用于替换函数的参数

函数参数只在函数中出现一次,可以使用下划线代替

def main(args: Array[String]): Unit = {
    val a = List(1,4,2,7,3,5)
    val b = (x:Int,y:Int) => if (x<y)true else false
    println(a.sortWith(b))

    val c = a.sortWith((x:Int,y:Int) => if (x<y)true else false)
    println(c)

    println(a.sortWith(_ < _))
  }

在这里插入图片描述

8. 用于模式匹配中默认匹配项

  1. case表达式中无需使用到匹配到的变量,可以用_替代

格式

变量 match {
  case "常量1" => 表达式1
  case "常量2" => 表达式2
  case "常量3" => 表达式3
  case _ => 表达式4 // 默认匹配项
}
str match {
   case "hadoop" => println("大数据分布式存储和计算框架")
   case "zookeeper" => println("大数据分布式协调服务框架")
   case "spark" => println("大数据分布式内存计算框架")
   case _ => println("未匹配")
  }
  1. 在case校验的时候, 变量没有被使用, 则可以用_替代
def main(args: Array[String]): Unit = {
    val a:Any = 1.0

    val result = a match {
      case x:String => s"${x}是String类型的数据"
      case x:Double => s"${x}是Double类型的数据"
      case x:Int => s"${x}是Int类型的数据"
      case _ => "未匹配"
    }

	// 在case校验的时候, 变量没有被使用, 则可以用_替代.
    val result2 = a match {
      case _:String => "String"
      case _:Double => "Double"
      case _:Int => "Int"
      case _ => "未匹配"
    }
    println(result)
    println(result2)
}
大数据开发语言Scala(一)——scala入门 package: 包,等同于java中的packageobject:关键字,声明一个单例对象(伴生对象)main方法:从外部可以直接调用执行的方法def 方法名称( 参数名称 : 参数类型 ) : 返回值类型 = { 方法体 }Scala 完全面向对象,故scala去掉了Java中非面向对象的元素,如static关键字,void类型1) staticscala无static关键字,由object实现类似静态方法的功能(类名.方法名) 阅读详情

相关推荐

Scala下载及IDEA安装Scala插件(保姆级教程超详细)

一.Scala的下载与安装 Scala语言可以在Windows,Linux,Mac OS等系统上编译运行。由于Scala是运行在JVM平台上的,所以安装Scala之前必须配置好JDK环境(JDK版本要求不低于1.5!),本博客为基于Windows系统下安装。 JDK环境下载路径:https://www.oracle.com/java/technologies/downloads/#java8 注:根据自己的系统选择对应的JDK进行下载,版本不低于1.5!

weixin_51996831的博客 6万+

Scala中的下划线到底有多少种应用场景

我目前了解的有一下几个用处: 1、作为“通配符”,类似Java中的*。如import scala.math._ 2、:_*作为一个整体,告诉编译器你希望将某个参数当作参数序列处理!例如val s = sum(1 to 5:_*)就是将1 to 5当作参数序列处理。 3、指代一个集合中的每个元素。例如我们要在一个Array a中筛出偶数,并乘以2,可以用以下办法: a.fil...

congliibm的专栏 1386

【scala专栏_持续更新】5_idea配置scala

【大纲】 【正文】

专注大数据与自由 270

Scala下划线“_”的常用用法大全

本来想自己总结一篇博客, 在网上搜了一下,发现这篇不错遂转载以记之 在Scala中,我们随处可见下划线“_”,本篇博客记录了Scala中下划线“_”的各种常用用法,可能不是全部的用法。 目录 一、集合和函数中使用 1.1 集合 1.2 函数 二、作为通配符 2.1import语句 2.2case语句 2.3元组(tuple) 三、下划线和其他符号组合的使用方式 3.1下划线与星号(_*) 3.1.1 变长参数 3.1.2变量声明中的模式 3.2下划线与等号(_=) ...

qq_19316267的博客 856

【scala专栏_持续更新】2_mac安装scalaSDK

【大纲】 【正文】

专注大数据与自由 422

密码学实战:如何利用生日攻击破解哈希函数

本文深入探讨了生日攻击在密码学中的应用及其对哈希函数的威胁。通过分析生日悖论的数学原理,揭示了哈希函数在实际应用中的脆弱性,并提供了防御策略,如升级哈希算法、正确使用加盐技术等。文章结合实战案例,帮助开发者理解如何有效防范此类攻击,确保系统安全。

weixin_42530732的博客 192

Scala超全详解

一 Scala安装与配置 1 安装 2 配置IDEA 二 Scala基础 1 Hello Scala 11 IDEA运行HelloScala程序 12 控制台...

曲终人散 1765

2023-ICCV-隐式神经网络实现低光照图像增强(NeRCo)论文解读+代码解析

NeRCo()提出了一种名为NeRCo的隐式神经表示方法,用于合作式低光图像增强。现有的低光图像增强方法存在以下三个限制:不可预测的亮度降低和噪声、度量友好版本和视觉友好版本之间的固有差距,以及有限的配对训练数据。为了解决这些限制,论文提出了NeRCo方法,它以无监督的方式稳健地恢复感知友好的结果。具体而言,NeRCo通过一个可控的拟合函数统一了现实场景中多样的退化因素,从而提高了鲁棒性。对于输出结果,论文引入了来自预训练视觉-语言模型的先验信息,采用语义导向的监督方法。

weixin_45595504的博客 3185

你们要的Scala语言全家桶来咯,持续更新ing。。。

SCALA语言 作者认为scala是最简单又方便的的语言, 懒人必备。 1.scala的概述 1.1什么是scala scala它是一门语言 学过的其他语言:java js shell c C++ 1.2scala它是多范式的编程语言: (1)面向对象 (2)面向函数式编程 f(x)=y 函数式编程和它的高级特性(泛型,隐士类,隐士函数,隐士参数等等) 1.3 scala语言的优点: 快,代码简洁 1.4scala语言的缺点: 难以理解 为什么要学习scala 2.1优雅: 这是框架设计师第一个要

Internation985的博客 412

从Maya到Unity:3D模型导入全流程避坑指南(含FBX导出设置)

本文详细解析了从Maya导出3D模型至Unity的全流程,重点剖析了FBX格式作为跨软件协作“中间人”的优劣与核心设置。指南涵盖了Maya端模型清理、FBX导出关键配置(如嵌入媒体、轴转换),以及Unity端的模型、材质、动画导入优化与常见问题(如材质丢失、UV法线错误、骨骼动画错乱)的实战解决方案,旨在帮助3D美术师与技术美术建立稳定、高效的工作流。

lg888的博客 791

flink新版本无bat启动文件的解决办法

flink

6 4932

scala数组函数(持续更新)

**++**将两个数组合并成一个新的数组 scala> var a = Array("aaa","bbb","ccc") a: Array[String] = Array(aaa, bbb, ccc) //定义了一个String类型的数组a,a的内容为aaa,bbb,ccc scala> var b = Array(1,2,3,4) b: Array[Int] = Array(1, 2, 3, 4) //定义了一个Int类型的数组b,a的内容为1,2,3,4 scala> var c

Of_the_new的博客 969

GX WORKS2通过交换机连接PLC的方法

三菱PLC连接方法的分享

weixin_64927621的博客 3620

scala学习系列(四) Scala关键字(持续更新)

Scala有39个关键字: package, import, class, object(伴生对象关键字), trait, extends, with, type, for private, protected, abstract, sealed, final, implicit, lazy, override try, catch, finally, throw (scala中不需要抛异常...

FreedomZzzzz的博客 1650

基于Freertos与lwip移植FreeModbusTcp协议

基于FreeRTOS的N32G457VEL7之LWIP网络协议栈移植-优快云博客。

Dd_456456的博客 3239

YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构

本文记录的是基于RepVit的YOLOv11轻量化改进方法研究。RepVit的网络结构借鉴ViT的设计理念,通过分离的token mixe和减少推理时的计算和内存成本,同时减少扩展比率并增加宽度,降低延迟,并通过来弥补参数大幅减少的问题,提高了准确性。本文在替换骨干网络中配置了原论文中的和五种模型,以满足不同的需求。

Limiiiing的博客 2975

scala算子应用汇总(持续更新)

scala的巨大优势在于它的集合类型以及流处理。 在这里对常用的流处理应用进行总结

JcJJJJCc的博客 417

WIN10系统下VS2019编译CloudCompare2.12.4

CloudCompare2.12.4

点云侠的博客 3143

Scala学习-Scala入门基础必备-持续更新

面向对象 函数式语言也是基于JVM的对比java中的aa.java-(javac)->aa.class编译过程scala如下:aa.scala -(scalac)-> aa.class 编译过程。

wangning0714的博客 1373

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Scala学习笔记持续更新

Scala学习笔记 方法和函数的区别 Scala中的方法和Java中的方法相同,方法是组成类的一部分。方法有名字和签名,同时还有注解,以及方法的功能。 Scala中的函数是一个完整的对象,Scala中用22个特质(trait)抽象出了函数的概念。]\ 例如:Function2的函数: trait Function2[@specialized(scala.Int, scala.Long, scala.Double) -T1, @specialized(scala.Int, scala.Long, sc

keepHungery的博客 297

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

scala 学习持续更新

scala 学习持续更新搭建Scala开发环境,使用Intellij IDEA开发Scala程序1_scala的基本语法2 scala 环境搭建及其各种符号的含义3 scala 基本语法 脚本4、scala学习 tuple Array Map5 scala 基本语法...

架构师的成长之路的博客 1935

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【scala专栏_持续更新】21_scala集合+Iterator

【大纲】 【正文】

专注大数据与自由 1519

Scala 学习感想(持续更新)

有一点写一点,不成章法,没有顺序。 Traits 的意义:java class 可以通过实现数个接口来规范自己的行为,但是interface无法提供通用代码共享给所有实现它的class。这个事情本来可以由继承来做,但是一方面jvm不支持多继承,另一方面继承本身是个侵入性很强的关系,对象管理会遭遇很多麻烦。Traits巧妙解决了多继承的问题,同时还规避了很多不必要的复杂性(即使是支持多继承的C...

jeff2033333的博客 459

scala学习笔记【持续更新】

scala-doc下载链接 可以用迅雷打开链接进行下载:https://www.scala-lang.org/files/archive/scala-docs-2.**.*.zip

weixin_45805060的博客 275

scala相比java 有哪些不同点(持续更新)

Scala 是马丁·奥德斯基于2001开始设计,它在java的基础之上改造来的,scala可以直接调用java的包。 一般来说,学scala的人,都会java,scala也是基于java的JVM为运行环境,并且将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言,既然也是基于JVM,所以scala和java是可以无缝对接的。而scala会更加的简洁,语法也会更容易便于阅读。 不过正是因为二者如此的相似,就更需要理清二者的不同点,我主要是从scala出发,把scala不同于java的点列出来: s.

m0_55243062的博客 652

scala数组、集合函数大全(持续更新中)

目录++、++:+:、:+/:、\:addString(b:StringBuilder):StringBuilderaddString(b:StringBuilder,sep String):StringBuilderapply(i:Int):TcharAt(index:Int):Charclone():Array[T]collect(pf: PartialFunction[A, B]):Array[B]collectFirst(pf: PartialFunction[T, B])combinations(

Messi的小迷弟 866
上一篇: Scala(20) -- Scala的Akka(并发编程框架)
下一篇: Spark(1) - spark概述
erainm
博客等级 码龄12年 1万+粉丝 214原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

erainm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值