scala学习1

1.变量:

使用val 来定义常量 val x = 3    x不可以在被赋值为其他的值

使用var 来定义变量 var x = 3   

使用lazy val 开定义惰性常量,常量在真正被用到的时候才会被计算

 

 

2.数值类型:

数值类型与java中类似,有Byte Short Int Long Float Double

eg: var x : Int = 3

eg var y : Floaf = 4

eg var z  : Double = 3.456

Nothing用来表示函数出现异常 def f = throw new Exception("wer")

Unit表示函数返回空 : def f00 = {}   var x = ();

 

 

3.函数的声明

def functionName(parameter:类型):返回值类型 = {

书写代码块

}

返回值类型可以省略 :

def functionName(parameter:类型) = {

代码块

}

4.if else & for

if(compress)'a' else 'b' 若compress为真输出a 否则输出b

if(compress) ' ' else 'b' 若compress为真输出 Any = ()

if表达式后面若存在else则if后面必须有表达式

 

var x = List('s','b') 定义list

for(y <- x if(y != null))print(y)

var p = for(y <- x if(y != null))yield(y) yield表示将数据y赋值给p 由于y是list中的数据,所以 p也会被声明为了list

“<-”是用来遍历list中的元素的

 

5.try catch finally match

try{

 var x = 1 / 0

} catch{

case _ => 's'

}finally{

print("ss")

}

 

var x = 5

x match = {

case 1 => 1

case 2 => 2

case _ => 4

}

 

6.scala的求值策略(传参方式)

(1)call by name 不会对表达式求值,直接带入函数体

(2)call by value 对表达式求值得到结果后,才代入函数体

def x(a:Int,b:Int) = a * a  属于call by value 

def z(a :=>Int,b: => Int) = a * a 属于call by name

def y():Int = y;

x(y,3)会造成死循环,因为会先对y表达式求值,而y表达式是一个死循环的表达式

 

7.匿名函数

匿名函数的定义:(参数列表)=> {函数体}

scala里函数体可以作为一切参数

 

8集合

scala集合的种类有set map seq

声明list:var x = List(1,2,3)

var x = a :: b :: v :: Nil可以使用 ::  来做元素的连接操作

方法:x.head 返回1

xtail 返回 2,3

x.isEmpty 返回一个boolean值

可以使用:::将多个集合链接起来

 

高级应用:

x.filter(匿名函数) filter将会过滤符合匿名函数条件的元素

"sdfsdf dfs".toList.filter(x => Character.isDigit(x)) 将字符串转换为字符列表,并过滤出是数字的字符

"sdfsdf dfs".toList.takeWhile(x => x != 'd') 当满足takeWhile表达式就终止过滤

var tt = "s"::"zz"::Nil  tt.map(x => x.toUpperCase) 将会把tt中的元素变为大写,tt需要是一个String类型的列表

var a = List(1,2,3)    a.reduceLeft((x,y) => x + y)  将a中的元素计算为最终的一个元素

var s = List(1,2,3).toStream  使用toStream可以使得元素lazy化,在使用的时候在去计算

1#::2#::Stream.Empty 惰性列表的另外一种声明方式

1 to 10 会声明一个1到10的列表

1 to 10 by 2 会声明一个1到10的列表 但是步长为2

1until 10 10是开区间

var c = Map('s' -> 3)  声明一个map

c('s') 取出key为字符s的value值

c + ('d' -> 5)会给map集合中添加一个k,v

c ++ List('f' -> 33)  会加入多个

c.contains(key) 判断是否包含某个key

c.keys 返回所有的key

移除可以使用 - 号或者 --号
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值