[scala之二]控制结构和函数

概览

(scala语句和表达式几乎都有值) PK (java中语句有值,表达式执行动作)

1.条件表达式

if(x>0) 1 else -1

可以将表达式结果直接赋值给变量

val s = if(x>0) 1 else -1

scala支持混合型表达式

if(x>0) "positive" else -1
在scala中每个表达式都应有值
if(x>0) 1 else ()  //()表示Unit类,即占位符

2.语句终止、表达式赋值与输出打印

①.scala行尾一般不添加;结尾

②.表达式赋值的返回值为Unit,所以scala不支持x=y=1这种连续赋值[结果为y=1,x=Unit是没有意义的]

③.scala既支持java风格的println/print方式输出,也支持c风格的printf格式输出

3.循环

①.while循环

int x=10
int i=0
while(x>0){
    i+=x
    x-=1
}

②.for循环: [1 to n]是一个Range集合

int r=0
int n=10
for(i<-1 to n){
    r+=i
}
当不需要上限时,使用util代替to

String s = "hello"
for(i<-0 until s.length){
    print(i)
}
或者简写为

for(ch<-"hello") print(ch)

③.高级for

多个生成器,逗号分隔

for(i<-1 to 3;j<-1 to 3) print("i*j="+i*j +" ")
守卫:if开头的Boolean表达式

for(i<-1 to 3;j<-1 to 3 if j!=i ) print("i*j="+i*j +" ")
使用定义,比如定义from

for(i<-1 to 3;from = 4-i; j<-from to 3  ) print("i*j="+i*j +" ")

④.for推导式:for循环体以yield开始,会生成一个集合,每次迭代生成集合中的一个值

for(i<-1 to 10) yield i*3

4.函数

scala的方法操作对象,而函数不是。

函数定义:函数名、参数、函数体

函数返回值:无需定义return,默认使用最后一个表达式返回;类型为=右侧表达式的类型

def abs(x:Double)=if(x>=0) x else -x
递归函数需要定义返回值类型

def fac(n:Int) :Int = if(n<=0) 1 else n*fac(n-1)

5.过程

如果函数体包含在{}中但没有前面的=,则返回值类型为Unit,这类函数称为过程。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值