scala学习第二章 控制结构与函数

在scala中可以将if/else表达式的值赋值给一个变量 例如: val s = if(x > 0) 1 else o

var sum = 0;
val s == "hello"
for(i <- 0 to s.until s.length)//until 方法返回一个并不包含上限的区间
	sum += s(i)

也可以不需要使用下标

var sum = 0
for(ch <- "Hello") sum += ch

每个生成器都可以带一个守卫, 以if开头的Boolean表达式

<pre name="code" class="java">for(i <- 1 to 3; j <- 1 to 3 if i !- j) println((i*10 + j) + " ")
//将打印 12 13 21 23 31 32
//注意if 前面没有分号
 

如果循环体的循环以yield 开始,则该循环会构造出一个新的集合,每次迭代生成集合中的一个值

for(i <- 1 to 10) yield i % 3
//生成Vector(1,2,0,1,2,0,1,2,0,1)


fort推导式和它的第一个生成器是类型兼容的

for(c <- 'Hello"; i <- 0 to 1) yield (c + i).toCHar
//将生成"HIeflmlmop"
for(i <- 0 to 1; c <- "Hello") yield (c+i).toChar
//将生成Vector('H','e','l','l','o','I','f','m','m','p')


scala中除了支持方法,还支持函数,方法对对象进行操作,函数不是.

定义函数,需要给出函数的名称,参数,函数体,例如:

def abs(x: Double) = if(x > 0) x else -x
//只要函数不是递归的,你就不需要指定返回类型,scala编译器可以通过=符号右边表达式的类型推断出返回类型

如果函数需要多个表达式完成,可以用代码块,代码块中最后一个表达式的值就是函数的返回值

def fac(x : Int) = {
	var r = 1
	for(i <- i to n) r = r * i
	r
}

对于递归函数我们必须指定返回类型. 例如:

def fac(x : Int) : Int = if(n <= 0) 1 else n * fac(n - 1)
//如果没有返回类型,scala编译器无法校验n * fac(n-1)的类型
实现一个可以接受可变长参数列表的函数


val s = sum (1,2,3,4,5)

函数会得到一个类型为Seq的参数


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值