标签:
val s = if(x > 1) 1 else -1
s 可以是 val
var s = 0 if(x > 1) s = 1 else s = -1
s 必须是 var
表达式 val s = if(x > 1) 1 else -1的类型是Int
混合类型表达式
if(x > 1) "hello" else -1
一个是String,一个是Int,公共超类型是Any。
if(x > 1) 1 或 if(x > 1) 1 else ()
()表示Unit, "无有用值", 当做java中的void.
每条语句,行尾不需要使用分号,如果在单行中写下多个语句,就需要将他们分号隔开。
if (n > 0) {r = r*n; n -= 1}
在写较长的语句,分两行来写的话,第一行不能用表示结尾的符号结尾,比如操作符
s = s0 + s1 * s2 +
s3 * 0.5 + s4
推荐使用花括号
if( n > 1) { r = r * n n -= 1 }
val dis: Int = { val a = 2; val b = 4; a+b}
println(dis)
语句块的返回值取最后一个表达式,这里为 a+b的结果。
val n: Unit = { val a = 3}
println(n)
赋值语句的返回值是Unit类型类似于java中的void,结果为()
注 不要这样赋值
y = x = 1
x = 1的结果为Unit,则y的值为Unit
输出:
print("Answer:") println( 42 ) println("Answer:" + 42) //格式化输出使用printf printf("My name is %s, I am %d years old.\n", "Fred", 42 )
格式化输出使用printf
换行输出println
输入:
val name = readLine("You name:") print("Your age:") val age = readInt() printf("Hello %s, next year, you will be %d years old.\n", name, age + 1)
readLine读取一行,带参数提示符。
readInt, readChar, readFloat, readDouble, readByte, readShort, readBoolean, readLong
while循环
while(n > 0){ n = n*r n -= 1 }
for循环 变量 i 在之前并不需要指定
for(i <- 1 to 10){ println(i) }
until 返回一个并不包含上线的区间,最后一个值为 s.length-1
val s = "hello" for(i <- 0 until s.length) { println(s(i)) }
scala没有与java for(;;)循环相关的结构
scala没有提供continue和break语句来退出循环,如果需要break时,我们该如何操作?
import scala.util.control.Breaks._ breakable{ for(i<- 0 to 10){ if(i == 4){ break } println(i) } }
def func(): Unit ={ for(i<- 0 to 10){ if(i == 4){ return } println(i) } } func()
for(i<- 0 to 10 if i < 4){ println(i) }
变量<-表达式 表示生成器
提供多个生成器
for(i<- 1 to 3; j<- 1 to 3) print ( i*10 +j +" ")
结果:11 12 13 21 22 23 31 32 33
类似于Java的嵌套for循环
每个生成器可以带一个守卫 以if开头的Boolean的表达式
for(i<- 1 to 3; j<- 1 to 3 if i != j) print ( i*10 +j +" ")
结果:12 13 21 23 31 32
定义任意多的变量,在循环中使用
for(i<- 1 to 3; from<- 4 to i; j<- from to 3) print ( i*10 +j +" ")
结果:12 13 21 23 31 32
推导式 for的循环体以yield开始,循环会构造出一个集合,每次迭代生成集合的一个值
for(i<- 1 to 10) yield i % 3
结果 Vector(1, 2, 0, 1, 2, 0, 1, 2, 0, 1)
推导生成的集合与它的第一个生成器是类型兼容的
for(c<- "Hello"; i<- 0 to 1) yield (c+i).toChar //第一个生成器是 c<-"Hello" for(i<- 0 to 1;c<- "Hello") yield (c+i).toChar //第一个生成器是 i<- 0 to 1
结果:HIeflmlmop
Vector(H, e, l, l, o, I, f, m, m, p)
标签:
原文地址:http://www.cnblogs.com/one--way/p/5796604.html