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 立即下载

相关推荐

vue3+ts项目里如何使用状态管理pinia以及数据持久化

vue3 pinia 数据持久化

ICUiseeyou的博客 8794

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

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

qq_29499107的博客 631

数据结构:五岔路口交通管理红绿灯设计

我们可以知道这是一个“图”的着色问题,首先要考虑,为什么可行路线是13条?当然可以通过穷举得出,如果用公式:则是: 或者 因为一条路线必须包括一出一进两个方向 第一种答案的解法: 一、固定E为入口,则有C_4^1=4的可能; 二、除去E(因为E只有一个入向),剩下ABCD四个路口,然后因为C只有一个出方向,所以从剩下 的ABD中选择一个入口,即C_3^1; 三、再从剩下的三个出口任选

潘猫猫的世界 1万+

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

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

congliibm的专栏 1386

0/1背包问题:从暴力递归到动态规划详解

题目: 有一组数量为 n 个物品,每个物品都有重量w 和价值v 给定一个背包bag,背包装的物品不能超过背包最大载重容量返回背包bag 能装下的最大价值1. 物品的重量和价值:2. 背包的容量:暴力解法的核心是递归,通过逐一决策每个物品是否放入背包,最终找到最优解。状态定义:递归逻辑:递归终止条件: 动态规划解法 递归的暴力解法有重复子问题,导致了大量的重复计算。为了解决这个问题,我们可以使用动态规划来优化。状态定义:状态转移:边界条件: 测试方法 示例解析 假设:我们希望找到在容量为

Mr.Ayao's blog 2066

AMD SDP 优快云 系列文章设计

摘要 本文档规划了7篇AMD SDP协议解析系列文章的技术博客设计方案。基于《Scalable Data Port (SDP) Specification》1.5.0版本(122页),面向SoC/NoC领域的RTL设计与验证工程师,构建从基础概念到验证实现的知识体系。 系列文章严格遵循协议规范边界,采用五类证据标签区分内容来源(规范原文、勘误、验证推导等),禁止补充未定义的实现细节。包含端口控制、事务传输、一致性协议等核心内容,最终落实到验证平台设计与覆盖率模型。 每篇文章采用统一模板:明确规范依据、问题导

元直的博客 163

Scala中下划线的用法

Scala中下划线的用法

mrgui008的博客 635

基于STM32F1XX 、HAL库的OPT4001-Q1环境光传感器驱动应用C语言程序设计

OPT4001-Q1 的输出是半对数 的,具有 9 个二进制对数满量程照度范围,每个范围内具有高度线性响应,使得 PicoStar™ 型号的测量能力为 312.5μlux 至 84klux,USON 型号的测量能力为 400µlux 至 107klux。// 禁用中断(示例)

PP_Cottage的博客 461

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

32、运算放大器的工作原理与应用

本文详细介绍了运算放大器的工作原理与多种应用场景,涵盖开环与闭环放大器的基本概念、理想运算放大器的特性及其‘黄金规则’。文章深入解析了反相放大器、同相放大器、单位增益跟随器与反相器的配置和增益计算,并探讨了电压比较器及窗口比较器的工作机制。同时提供了运算放大器在实际应用中的选型流程、使用注意事项以及常见故障排查方法,帮助读者全面掌握运算放大器的设计与应用要点。

u5v6w7的博客 164

SAP 错误消息调试之七种武器:让所有的错误消息都能被定位

目录 长生剑 - SAPGUI Where Used List 碧玉刀 - ABAP调试器观察点 霸王枪 - ABAP调试器动态断点 多情环 - ABAP代码静态扫描 孔雀翎 - SAT 离别钩 - ST05 拳头 - 迷之方法??? Jerry在2018年开始用中文在微信公众号平台上写作之前,在SAP官方社区上总共写了639篇英文博客。 其中有一篇写于2013年介绍ABAP调试技巧的博客:

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2810

细数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万+

CE电流法测试中的dBμV负值解析

传导发射(CE)电流法测试中出现的dBμV负值现象表明被测设备干扰电平低于1μV参考基准。这源于对数计算特性(小于1μV的电压转换后为负值)、设备优良的EMC设计(如滤波效果显著)及测试环境的影响(LISN隔离、屏蔽室低噪声)。负值虽不代表实际负电压,但反映干扰水平优于标准限值,为系统集成预留电磁裕度。工程应用中需结合设备灵敏度、环境背景噪声等因素综合分析,避免误判,这类数据可用于评估EMI设计冗余度。

硬核科技 298

scala下划线的含义

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

qq2Shi的博客 544

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

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

君知君不知 739

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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、付费专栏及课程。

余额充值