scala中下划线的几种含义

scala 下划线使用指南 原文地址:https://my.oschina.net/joymufeng/blog/863823   作者:joymufeng 下划线这个符号几乎贯穿了任何一本Scala编程书籍,并且在不同的场景下具有不同的含义,绕晕了不少初学者。正因如此,下划线这个特殊符号无形中增加Scala的入门难度。本文希望帮助初学者踏平这个小山坡。 1、用于替换Java的等价语法 由于大部分的Java关键... 阅读详情

目录

1. 将方法转变为函数

2. 表示集合里的每个元素

3. 获取元组Tuple中的元素

4. 模式匹配

5. 队列匹配

6. 通配符

7. 变长参数

8. 初始化变量


1. 将方法转变为函数

def method1(x:Int,y:Int)=x*y
val func1=method1 _   // 注意这里的空格
method1(2,3)
func1(2,3)
//    res: Int = 6

2. 表示集合里的每个元素

val list1=List(1,2,3,4)
val list2=list1.map(_ * 10)
//    list2: List[Int] = List(10, 20, 30, 40)

//  用_分别表示二元函数中的参数x和y
List(10, 5, 8, 1, 7).sortWith(_ < _)
//    res: List[Int] = List(1, 5, 7, 8, 10)

3. 获取元组Tuple中的元素

val t=("wyk",1.23,100)
println(t._1) // wyk
println(t._2) // 1.23
println(t._3) // 100

4. 模式匹配

包括字符串匹配、类型匹配、数组匹配、集合匹配和元组匹配

val word="wyk"
val result =word match{
  case "wyk" => 1
  case "csdn" => 2
  case _ => 0 // 以上都没有匹配到才会被执行
}

// 通过模式匹配获取元组的元素,当不需要某个值的时候可以使用_替代,例如
val t1 = (1, 1.23, "wyk")
val (first, second, _) = t1  
// 此时新定义了两个常量 first second
//    first: Int = 1
//    second: Double = 1.23

5. 队列匹配

val list=List(1,2,3,4)
list match{
  case List( _,_* ) =>1  // List(_,_*)表示匹配以任意开头,任意数量的列表。其他类似的有:List(3,x,y) 匹配3开头,共3个元素的list。  List(3,_*) 匹配3开头,任意数量的list。
  case _ =>2  //除此之外 匹配此处
}

6. 通配符

//导包引入,表示引入的时候将 scala.collection.mutable 包下面所有的类都导入
import scala.collection.mutable._

7. 变长参数

def sum(args: Int*) = {
  var result = 0
  for (arg <- args) result += arg
  result
}

val s1 = sum(1,2,3,4,5)
// 等效于
val s2 = sum(1 to 5: _*)

8. 初始化变量

// 在这里, age 也可以声明为 0 ,例: var age:Int=0 。这里的下划线和 0 的作用是一样的。
var age:Int=_   
// 在这里, name 也可以声明为 null ,例: var name:String=null 。这里的下划线和 null 的作用是一样的。
var name:String= _  

 希望本文对你有帮助,请点个赞鼓励一下作者吧~ 谢谢!

03Scala下划线的使用 1.方法转换为函数 scala> def m(x:Int,y:Int) = x*y m: (x: Int, y: Int)Int scala> val f = m _ f: (Int, Int) => Int = 2.集合中的每一个元素 scala> val list = List(1,2,3,4) list: List[Int] = List(1, 2, 3, 4) scala> val list2 = list.map(_ * 5) list2: List[Int] = List(5, 10, 15, 20) 3.获取元组tuple中的元素 scala> val t = (“hadoo 立即下载

相关推荐

在 Dify 平台部署一个 知识库问答(KBQA) 工作流

加强检索约束,Prompt 加限制(“仅基于知识库回答”):启用缓存,使用轻量级 LLM(如 Mistral-7B)(OpenAI Embedding、M3E、BGE等)(支持 PDF/TXT/Markdown/Word)(GPU/CPU 资源,用于向量数据库和模型推理)企业内部文档(PDF/Word/Excel)网页爬取数据(Markdown/HTML)分块大小(太小→信息碎片化,太大→噪声多)相似度阈值(太高→漏检,太低→噪声多)(是否返回正确文档)结构化数据(数据库/API)

井底小蛙的博客 1520

Scala 设计下划线_ 的意义 以及使用。

Scala中是这样定义下划线 _ 的: _ 代表 ‘’任意‘’ 在Scala语言中存在类型推理,就是有的时候你不必指定具体的类型,Scala语言会自动进行推测参数的类型是什么。 比如: var a = "a" 这里Scala会自动推测他为 String类型。 var b = 2 这里Scala会自动推测他为Int类型 那我们在Scala语言...

qq_29499107的博客 631

【Python】torch_npu

Ascend AI处理器核心计算范式与PyTorch的桥接艺术:深入探索torch_npu的基石要真正理解,我们必须首先超越其作为PyTorch后端库的表面认知,深入其所服务的硬件——华为昇腾(Ascend)AI处理器的核心计算范式。这不仅仅是关于如何在NPU上运行PyTorch模型,更是关于NPU如何设计其计算,以及如何巧妙地将这种硬件特性映射到PyTorch的抽象层之上。1. 昇腾AI处理器的达芬奇架构:极致算力的源泉昇腾AI处理器并非传统的CPU或GPU。它采用了华为独创的达芬奇(Da Vinci)架

宅男很神经 5372

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

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

congliibm的专栏 1386

从爱好者到工程师:如何低成本体验RFSoC ZU47DR?性能实测与避坑指南

本文详细介绍了如何低成本体验赛灵思RFSoC ZU47DR芯片,包括二手开发板选购、租赁服务、精简开发环境搭建等实用方案。通过性能实测与避坑指南,帮助爱好者和工程师在有限预算下充分利用这款集成了ARM处理器和FPGA的高性能芯片,降低开发门槛。

weixin_42525005的博客 221

10-Oracle 23 ai Vector Search 概述和参数

企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation :RAG)功能,RAG能够将LLM的生成能力与知识库的精准资料库进行检索结合,将大模型部署在内部同时将私有的数据进行LLM的检索避免泄露企业专用的数据同时提高的准确性。于是如何将数据存入向量数据库以及向量查询等这些基本功能变得必备和重要。

远方的专栏 1295

Scala中下划线的用法

Scala中下划线的用法

mrgui008的博客 635

Transformer 在自动驾驶中的应用:深度对比特斯拉(Tesla)、小鹏(XNet)、华为(ADS 2.0)在 Transformer 架构应用上的异同

自动驾驶汽车是当前人工智能和机器学习领域的热点研究方向之一。其核心技术之一就是基于深度学习的感知和决策系统。在感知系统中,目标检测和跟踪、语义分割、场景理解等计算机视觉任务至关重要。而在决策系统中,规划和控制模块需要对当前状态进行建模并做出相应的决策。近年来,Transformer模型在自然语言处理领域取得了突破性进展,并逐步被应用到计算机视觉等其他领域。相比于传统的卷积神经网络和循环神经网络,Transformer模型具有建模长距离依赖关系的能力,可以更好地捕捉输入序列中的全局信息。

AI天才研究院 864

Scala 中 “ _ “ 下划线的用法总结

1、作为“通配符” 类似Java中的*。(例如导入所有包 ) import scala.math._ case语句,例如: object MatchTest extends App { def matchTest(x: Int): String = x match { case 1 => "one" case 2 => "two" case _ => "many" } println(matchTest(3)) } 可以通过模式匹配获取元组的元素,当

qq_44966403的博客 1060

2017年全国大学生电子设计竞赛综合测评题目解析——Multisim仿真

1.题目 给定两个单电源的双运放芯片READ2302G芯片(当时记得增益带宽积好像是6M),一片HD74LS74数字芯片双D触发器,需要详细电路图、手写报告,5个波形输出,测频,测幅,8:00公布题目,15:00停止答题,中间可以吃饭(也可以不吃继续做),15:00清场,休息一段时间后开始进场测试,打分。 2.要求 (1)一片运放搭建方波振荡电路,频率 20 KHz,误差 0.1 KHz,幅度 3...

DengFengLai123的博客 2万+

地图自定义编码CSV转换成ini文件

创 建 schema.ini 文件:有时,当您尝试使用 .csv 文件将自定义地理信息导入 Tableau 时,您可能会看到“无法使用.csv,因为它不包含唯一列”错误消息。这是因为您的 .csv 文件可能包含数值数据,例如数值邮政编码。对于新的地理角色,Tableau 将只接受文本字段。但是,您可以创建一个 schema.ini 文件,以指示 Tableau 应将您要导入的数值字段视为文本字段。...

wenyusuran的专栏 1975

细数Scala下划线“_”的用法

第一:初始化的时候。 object Sample { var name:String=_ def main (args: Array[String]){ name="hello world" println(name) } 在这里,name也可以声明为null,例:var name:String=null。这里的下划线和null的作用是一样的。 第二:引入的时候...

菜刚RyuGou的专栏 2万+

uniapp [全端兼容] - 详细实现用户电子签名 “逐字校验“ 将姓名按字拆开分别手写签署签字,把客户名字自动拆成单独的文字并由用户逐个依次签名与汉字笔画校验,支持汉字格、田字格、米字格、方格等!

uniapp,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,手写签名,电子签署,逐个字挨着写,写名字,将客户姓名分成单独的文字并依次手写,在田字格里写名字,米字格,方格,合同,书写轨迹,验证手写的文字是否正确,如何在uni-app做姓名拆分成独立的文字后手写每一个字,校验正确性,画板,汉字生成在米字格里并且让用户去写,如何画一个汉字田字格,vue把姓名拆分单独写签名,文字,拆掉,中文汉字网格,一个字一个字签名,一次只签名一个文字,判断签名的文字笔画是否正确,Un

🏆 前端领域优质创作者 1万+

scala下划线的含义

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

qq2Shi的博客 544

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

一张表了解Scala下划线的含义

下划线的各种含义 详解 val f1 = f _ 将方法转换为函数传递,相当于把函数f当成一个整体,传递给变量f1 import scala.util.control.Breaks._ 对break进行省略 var i : String =_ _作为类成员变量默认值,只能是var修饰的变量,不能是局部变量 import java.util._ 导入通配符,import中...

君知君不知 739

IMSL CNL 7.0.0 (x86-64)Crack

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

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

在Scala中,我们随处可见下划线“_”,本篇博客记录了Scala中下划线“_”的各种常用用法,可能不是全部的用法。 目录 一、集合和函数中使用 1.1 集合 1.2 函数 二、作为通配符 2.1import语句 2.2case语句 2.3元组(tuple) 三、下划线和其他符号组合的使用方式 3.1下划线与星号(_*) 3.1.1 变长参数 3.1.2变量声明中...

guofei_ok的博客 3422

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Scala中的下划线使用总结

Scala中的下划线使用总结1. 方法转化为函数例如: def m1(x:Int,y:Int)=x*y val f1=m1 _2. 集合中的每一个元素例如: val list=List(1,2,3,4) val list1=list.map(_ * 10)3. 获取元组Tuple中的元素例如: val t=("hadoop",3.14,100) t._1 t._2

Running_Tiger的博客 8047

spark scala 中下划线_的各种用法

本文只是列出一些常见的用法,可能不是全部 将方法转换为函数 请参见《Scala中Method方法和Function函数的区别》 作为函数的参数 一个匿名的函数传递给一个方法或者函数的时候,scala会尽量推断出参数类型。例如一个完整的匿名函数作为参数可以写为 scala&gt; def compute(f: (Double)=&gt;Double) = f(3) compute: (f...

a627082796的博客 3152

Scala基础-下划线使用指南

欢迎访问PlayScala社区 下划线这个符号几乎贯穿了任何一本Scala编程书籍,并且在不同的场景下具有不同的含义,绕晕了不少初学者。正因如此,下划线这个特殊符号无形中增加Scala的入门难度。本文希望帮助初学者踏平这个小山坡。 文章目录1.用于替换Java的等价语法1.1 导入通配符1.2 类成员默认值1.3 可变参数1.4 类型通配符2.模式匹配2.1 默认匹配2.2 匹配集合元素Sc...

大数据梦想家 8539

Scala中下划线的7种用法

Scala是一门以java虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言。scala 单作为一门语言来看, 非常的简洁高效,在Scala中存在很多让代码更加简洁的语法,下划线“_”便是其中一个。下划线的普遍用法总结如下: 1. 用于变量初始化 在Java中,可以声明变量而不必给出初始值,在Scala中,变量在声明时必须显示指定,可以使用下划线对变量进...

weixin_40393128的博客 1820

scala中的下划线含义

scala中下划线的作用

liyongke89的专栏 2636

Scala 下划线

Scala 下划线 1、概述 下划线这个符号在不同的场景下具有不同的含义。 2、替换Java的等价语法 大部分的Java语言的关键字在Scala语言中拥有了新的含义,所以一些基本的语法在Scala中有变化。 体现在导入通配符、类成员默认值、可变参数、类型通配符等方面。 (1)导入通配符 *在Scala中是合法的方法名,所以导入包时要使用_代替。 //Java import java.lang.*; //Scala import java.lang._ (2)类成员默认值(该语法只适用.

ITWUYI的博客 290

scala中=>、下划线_的含义以及匿名函数的省略参数情况

1、=>的含义 (1)表示匿名函数 //匿名函数 val triple = (x: Double) => 3 * x //执行函数 println(triple(3))   说明 (x: Double) 是形参列表, => 是规定语法表示后面是函数体, 3 * x 就是函数体,如果有多行,可以 {} 换行写。匿名函数的返回是通过类型推导来实现的。 triple 是指向匿名函数的变量,可以将其看成一个函数。 (2)表示(可能是高阶)函数的返回类型 //高阶函数中的方法定义 def t

小伦的博客 697

scala中何时使用下划线_在Scala中使用下划线

scala中何时使用下划线Underscore (_) character is reserved in Scala and has multiple usages in the programming language. Based on functions that use the underscore have the following usages: 下划线(_)字符在Scala中保留...

cumtb2002的博客 374

Scala中下划线“_”的用法小结

下划线符号“_”在Scala语言中经常会用到,并且出现的场景千变万化。本文就列举出在一些主流情境下,“_”这个魔法符号分别是什么用法。 匿名函数参数占位符 当匿名函数传递给方法或其他函数时,如果该匿名函数的参数在=>的右侧只出现一次,那么就可以省略=>,并将参数用下划线代替。这对一元函数和二元函数都适用。例: scala> val list = List(5...

LittleMagic's Blog 1869
上一篇: CDC系列(三)、Debezium 监控MySQL操作日志实时同步到Kafka(对比canal,maxwell)
下一篇: 数仓必会:Sqoop常用命令(全量/增量/全库同步)
王义凯_Rick
王义凯_Rick 领域专家: 大数据技术领域 领域专家: 大数据技术领域
博客等级 码龄14年 858粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

王义凯_Rick

遇见即是缘,路过就给个评论吧~

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

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

打赏作者

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

抵扣说明:

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

余额充值