Scala记录补充

书写不用;号,一行写多个用;
在scala里面 不用写return 最后一个是返回
val 定义变量不能修改 相当于java中final修饰的关键字(不经常变使用)节省java 虚拟机的资源. val 定义的数组内容是可以修改的
var 可以修改
可以传可变参数 例如nt*

Trait 相当于一个接口 可以有实现,也可以没

object是一个关键字 和java Object不一样

1 to 10 返回是一个区间。to是一个方法 Range(1,2,3,4,…,10)
val t=for(i<- 1to 10) yield i10 会生成一个新的数组集合(相应的10) t=Vector(10,20,30,…100)

map 是把集合或者数组中每一个元素取出来进行操作 有时候 map( _ ) 代表一个元素

val a1=Array(1,2,3,4,5,6,7,8,9,10)
a1.filter(_ %2 ==0) 结果为Array(2,4,6,7,10) 将a1每一个元素取出来操作
t

方法

def m(x:int):int = x*x x:int 定义x为int。返回值为int 不指定的话编译器自动规范。返回值要用=号

函数

定义函数需要用=> val f = (x:int,y:int)=>{x+y}
方法与函数最大的区别:函数可以作为值传入方法中,业务逻辑由函数决定
def m1(f1 :Int => Int):Int={
//在方法体里面调用函数
f(3)
}

val startService : Int =>(ActorSystem,Int) = {
//这是一个函数 ,传一个int参数,返回是一个元组,(ActorSystem,Int)是一个返回值的类型和个数
actualPort => //actualPort 是一个变量接收传入的参数
doCreateActorSystem(name,host,actualPort,conf,securityManger )

}

映射 val m = Map(“a” - >1,“b”- >2) m(“a”) 则返回1

下划线 _ 可以将方法变成函数

def m2(x:int,y:int) :Int =x+y
val f2 = m2 _
f2 (1,2) 返回3

不初始化的时候必须用_

访问一个元组
val t = (1,“spark”,2.0)
t._2 用 t._2代表访问第二个元素
一种写法
val t(x,y,z)=(“a” ,1,2.0) 则x 就是对应a

List

val list1=List(1,2,3)
val list2=0::list1 list2=List(0,1,2,3 )

list.par 转换成并行集合 ParVector(0,1,2,3,)
list.par.reduce(+) 并行求和 并行度与计算机核数有关

val list=List(0,3)
list match{
case x::y ::Nil => println(s"x:&x y:&y") //输出xy 前面要有s 然后取值用&
}

Nil 是一个空的List
val list=List(1,2,3,4)
list.head // 输出 1
list.tail //输出 List(2,3,4)

Aggregate

val arr=List(List(1,2,3),List(3,4,5),List(2),List(0))
arr.aggregate(+.sum,+) 第一个函数_+.sum是局部List求和(对局部操作) 后面+_是把所有结果相加(对拒不结果操作)

在类里面 用val修饰得只有get方法不用自己写。 var修饰的有get和set方法。
object 起名与class一样叫作伴生对象。
可以访问private修饰的变量
private[this]只能在类里面访问
private def printPop:Unit={} 只有伴生对象可用

private[itcast] class Person{} private [itcast] 代表包访问权限。即这个类在那个包里面可见。
private[itcast] class Person private{} Person private(构造器)代表私有的构造方法,只能在伴生对象中使用

class Mas{
val name="abc“
println(name)
}
object MAS{
val=new Mas //会直接输出 abc 相当于在主构造器里面它里面的代码块都会被执行,方法必须
//用实例调用
}

模式匹配

object caseDemo extendsApp{
var arr =Array(1,5,7)
arr match{
case Array(1,x,y) =>println(x+" “+y) //输出 1 5
case Array(0,_*)=>println(” ") // _*可以匹配多个参数 以0开始结尾不用管 比如
//arr=Array(0,1,2,3,4)

}
}

偏函数 没有match的case

object demo{
def func:PartialFunction[String,int]={ //如果是偏函数必须是PartialFunction里面有两个泛型
//第一个泛型代表输入,第二个代表返回
case “one”=>1
case _ =>-1 //参数为one的时候返回1 其他返回-1
}
def main(args:Array[String]){
println(func1(“one”)) //输出1
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值