Scala语法(三)
模式匹配
1)match
val a = 1
val b=a match { *// a match { }返回值赋予变量 b
case 1 => "red"
case 2 => "green"
case _ => "Not Allowed" *//其他通配符 _
or
case unexpected => unexpected +"is Not ALLOWED"
} println(b) // 输出red
for(elem <- List(9,12.3,"spark","hadoop",'Hello)) {
val value = elem match {
case i :Int if(i>=0) => i +"is an int value" *// 可以添加守卫(if)
case d:Double => d+"is a double value"
case s:String => s+"is a str value"
case _ => "This is an unexpected value"
}
println(value)
}
2) case类
case calss Car(brand:String,price:Int)
val BYD = new Car("BYD",89000)
val BWM = new Car("BWM",1000000)
val DABEN = new Car("BEN",1200000)
for(car <-List(BYD,BWM,DABEN)) {
car match{
case Car("BWD”,89000) =>println("HELLO,BYD")
case Car("BWM",1000000) =>println("Hello,BWM")
case Car("BEN",1200000) => println("Hello,DABEN")
}
}
Option类型
*//(引用值存在与否,不存在未None)
val books = Map("a"->1,"b"->2)
book.get("a") *//返回Option[Int] = Some(5)
book.get("c") *//返回Option[Int] = None
函数式编程
*//(函数如变量一样有类型和值)
def counter(a:Int):Int={a+=1} *//函数类型为: (Int)=>Int 参数只有一个时圆括号可省略`
//函数的值: (a) => {a+=1} 只有一条语句时大括号可省略
匿名函数(Lamda表达式)
val a = (num:Int) => num*2 //将匿名函数赋值给变量a
a(3) //返回6
闭包
val addMore =(x:Int)=>x+more *//(每次函数调用都会创建新闭包,每个闭包会访问闭包创建时活跃的more变量)
占位符:
var myList = List(1,2,3,4)
myList.filter(x=x>0) == myList.filter(_>0)
val f = (_: Int) +(_:Int)
f(5,10) = 15
遍历
1)for(elem<-myList) println(elem)
2) mylist.foreach(elem =>println(elem)) ==mylist.foreach(println) == mylist foreach println
映射遍历:
val myMap = Map("a"->1,"b"->2)
1)for((k,v)<-myMap) printf("%s,%d",k,v)
2)myMap foreach {case(k,v) =>println(k+":" +v)}
map操作
myList.map(elem=>elem+1)
myList.map(elem=>(1,elem+1) //转换为(key,value)
flatmap(拍扁操作)// List("hadoop","hive").flatmap(s=>s.toList) == List(h,a,d,o,o.....)
filete操作
books.filter(s =>s._2 contains 1) // s._2代表value s._1代表key
reduce操作(归约)
myList.reduceLeft(_+_) == ((1+2)+3)+4
myList.reduceRight(_-_) == 1-(2-(3-4))
flod操作(折叠)
myList.flod(10)(_*_) ==1*2*3*4*10 = 240
Scala语法(三)的更多相关文章
- PHP语法(三):控制结构(For循环/If/Switch/While)
相关链接: PHP语法(一):基础和变量 PHP语法(二):数据类型.运算符和函数 PHP语法(三):控制结构(For循环/If/Switch/While) 本文我来总结几个PHP常用的控制结构,先来 ...
- Python 基础语法(三)
Python 基础语法(三) --------------------------------------------接 Python 基础语法(二)------------------------- ...
- scala语法在spark withScope上的应用
withSpout在spark中是用来做DAG可视化的,它在代码里的用法如下(以map为例,spark 2.0.0版本) def map[U: ClassTag](f: T => U): RDD ...
- scala语法解析(解码指环)
看惯了JAVA的语法,再看scala的语法,有的晦涩难懂.正好遇到一个介绍scala语法的文章,就直接截图留念.省的再临时抱佛脚了.
- Pocket英语语法---三、英语动词的特点是什么
Pocket英语语法---三.英语动词的特点是什么 一.总结 一句话总结:即表示时间(时态),又表示人数(单复数) 1.第十七讲,不定量表达法? 1.a few为肯定含义几个,few为否定含义没几个, ...
- Java和Scala语法比较
类型推断 挑逗指数: 四星 我们知道,Scala一向以强大的类型推断闻名于世.很多时候,我们无须关心Scala类型推断系统的存在,因为很多时候它推断的结果跟直觉是一致的. Java在2016 年也新增 ...
- Scala 语法基础
一 简介 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性.Scala 运行在Java虚拟机上,并兼容现有的Java程序.Scal ...
- scala(三)
一.面向对象编程——类 1.定义一个简单的类 class HelloWorld { private var name = "leo" def sayHello() { print( ...
- ios -- 教你如何轻松学习Swift语法(三) 完结篇
前言:swift语法基础篇(二)来了,想学习swift的朋友可以拿去参考哦,有兴趣可以相互探讨,共同学习哦. 一.自动引用计数 1.自动引用计数工作机制 1.1 swift和o ...
随机推荐
- Intent的简单使用
主要实现Intent之间值得转递,如从AActivity到BActivity之间传一个数值,一个实体类,一个集合类 下面代码只要是实现对startActivityForResult的使用,用ABC 3 ...
- Spring Boot学习路线
Spring Boot 学习路线,本文计划根据作者近几年的工作.学习经验,来分析和制定一个学习使用 Spring Boot技术的步骤路线图. SpringBoot是伴随着Spring4.0诞生的: S ...
- raw_input与input的区别
1. 版本差异 raw_input——>python2版本 input——>python3版本 2. 输入格式差异 就是raw_input()随便输都是字符串,而input()必须按照Py ...
- Windows远程桌面,出现身份验证错误,要求的函数不正确
升级windows10 1803后,mstsc远程桌面出现 mstsc 远程桌面要求的函数不受支持,这可能是由于 CredSSP 加密 Oracle 修正.如图所示: 运行(win+r) gpedit ...
- Jupyter notebook远程访问linux服务器
[转]https://blog.csdn.net/akon_wang_hkbu/article/details/78973366
- POJ 3070 矩阵快速幂
题意:求菲波那切数列的第n项. 分析:矩阵快速幂. 右边的矩阵为a0 ,a1,,, 然后求乘一次,就进一位,求第n项,就是矩阵的n次方后,再乘以b矩阵后的第一行的第一列. #include <c ...
- 【[SCOI2007]修车】
题目 只能做网络流度日了 当然是要对每个修车的人拆点,把每个人拆成\(n\)个点用于接收不同时刻的车 每个车\(i\)向每个时刻\(k\)的人\(j\)连边,边权为\(t[i][j]*k\)这样就是这 ...
- 2018.11.11 Java的 三大框架:Struts+Hibernate+Spring
·定义:Java三大框架主要用来做WEN应用.Struts主要负责表示层的显示: Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作): Hibernate主要是数据持久化到数据库. ...
- Linux---more命令学习
More命令 more命令一般用于分页显示文件的内容,more会显示文件第一屏的内容,在屏幕的底部,more用反白字体显示文件的百分比,这时如果按空格键,文件的一下屏内容会显示出来,如果按回车键,显示 ...
- 【洛谷P2168】[NOI2015]荷马史诗
荷马史诗 建一个k叉哈夫曼树,用堆维护一下 // luogu-judger-enable-o2 #include<iostream> #include<cstdio> #inc ...