标签: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
<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')
定义函数,需要给出函数的名称,参数,函数体,例如:
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的参数
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:scala
原文地址:http://blog.csdn.net/u012762573/article/details/47780497