scala中一些常见用法
项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步
1.花括号与小括号的区别
以下代码的用法,非常常见:
val raw = List(("a",1),("b",2),("c",3))
val res = raw.map{ case (key,value) => value }.reduce(_ + _)
println(res)
注意这里如果将map方法的大括号换成小括号,代码会报错。
方法中的花括号有2种意思:
1)scala中函数的小括号,可以用花括号来表示,即foo{xx} 与 foo(xx)是一回事儿。
2)对于只有一个参数的方法,其小括号是可以省略的,map(lambda)可写为 map lambda,即这块{case (key,value) => value} 连同花括号整体是一个lambda(函数字面量)。
这里很明显花括弧啊的用法是第二种。
2.case偏函数
以下代码的用法,也非常常见:
val res2 = List(1,2,3).map{case 1 => "first"case 2 => "second"case _ => "other"}
{case x => y} 叫做偏函数(必须用大括号“{}”,使用“()”会报错)。 与完全函数想对应,普通的方法都是完全函数,即f(i:Int) = xxx 是将所有Int类型作为参数的,是对整个Int集的映射;而偏函数则是对部分数据的映射。
3.变长参数
有时候,函数需要一个可变长度的参数。在scala中是容易实现的:
object T1 {def sum(args:Int*) = {var result = 0for(arg <- args) result += argresult}def main(args: Array[String]): Unit = {val s = sum(1 to 5:_*)println(s)}
}
注意调用的时候使用:_*,将序列或者集合的内容全部当做参数来传递。
4.asInstanceOf[AnyRef]
val str = MessageFormat.format("The answer to {0} is {1}","everything",40.asInstanceOf[AnyRef])
这种写法很常见,对于任意的Object类型的参数都是可以这样。这种类似的参数在变长参数方法中使用最多。
scala中一些常见用法相关推荐
- c++中stringstream常见用法
c++中stringstream常见用法 stringstream使用时,要包含头文件#include<sstream>,sstream这个库的又是在于存入类型的数据可以直接进行转换,不用 ...
- linux中find常见用法
find命令用于查找指定目录下的文件,同时也可以调用其它命令执行相应的操作** 一.命令格式 find pathname -options [-print -exec -ok -] 二.linux中f ...
- scala中yeild举例用法
Scala中的yield的主要作用是记住每次迭代中的有关值,并逐一存入到一个数组中. 用法如下: for {子句} yield {变量或表达式} 具体举例如下,该例子获取文本文件中包含指定关键字的相关 ...
- scala中case的用法
scala中没有switch,但是有case,其case相当强大,有各种不同的匹配方式. 一.简单匹配,值匹配: 例 a: val bools = List(true, false) for (boo ...
- Linux中find常见用法示例
find命令的参数: pathname: find命令所查找的目录路径.例如用.来表示当前目录,用/来表示系统根目录. -print: find命令将匹配的文件输出到标准输出. -exec: find ...
- matlab 中disp()常见用法
disp()函数在matlab中使用help指令得出的结果如下 disp - 显示变量的值 此 MATLAB 函数 显示变量 X 的值,而不打印变量名称.显示变量的另一种方法是键入它的名称,这种方法会 ...
- __packed在结构体中的常见用法
前言 协议的数据传输中,一般将数据封装成结构体,同时对结构体进行__packed来保证数据在传输中是连续的bit流.下面实验了__packed在结构体申明和定义中怎样的写法才是正确的. 结构体申明 t ...
- Scala中=gt;的用法
1.匿名函数 (x: Int) => x + 1这一部分就是一个匿名函数,我这里使用了一个变量anonymousFun代替了这个匿名函数方便测试调用: =>左边是参数和参数类型,而=> ...
- 【find】Linux中find常见用法示例
1.根据 某个名字在某个目录下进行查找 find /etc/ -name "*.conf" 在/etc/目录下 查找 后缀名为conf 的文件 转载于:https://www.cn ...
- mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法
Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...
最新文章
- 【FFmpeg】ffmpeg命令详解(二)
- Win64 驱动内核编程-5.内核里操作文件
- Java:一个分数类的简单设计
- wxWidgets:wxTaskBarButton 示例
- poj 3590 The shuffle Problem(置换群+DP)
- 沙老师的作业系列——Crackme3
- 真实HDFS集群启动后master的jps没有DataNode
- 黑鲨会升级鸿蒙吗,买华为别乱选!这3款才是“最佳选择”,未来能升级鸿蒙系统...
- names文件和data文件_data.table让你的读取速度提升百倍
- 牛客网-数据结构笔试题目(八)-离子能力跃迁问题求解
- CSU 1202 剪刀石头布
- Tokyo Tyrant (ttserver)的master-slave复制协议分析
- 2021-2022年数学建模资料汇总——建模软件篇
- 小熊派BearPi-HM nano开发板 -- MobaXterm使用详情、VScode连接编译主机、小熊派源码获取及烧录
- dalao的tajan模板
- 前端-HTML基础入门
- Hazel游戏引擎(001-003)
- 42-表格表单和简单CSS引用
- NetSuite2.0 Restlet脚本 货品新增
- DAE系统的设计-豆瓣首席架构师洪强宁
热门文章
- [CareerCup] 12.6 Test an ATM 测试一个自动取款机
- PhpStorm中如何使用Xdebug工具,入门级操作方法
- 简单理解javascript中的原型对象,实现对之间共享属性和行为
- C言语次序查找算法及代码
- leetcode -- Maximum Subarray
- eclipse根据wsdl文件生成webservice客户端
- 机器学习中梯度下降算法的实际应用和技巧/李文哲
- Magento2.x 插件 Module(模块)开发实战
- Unity用GUI绘制Debug/print窗口/控制台-打包后测试
- Eclipse Class Decompiler——Java反编译插件