1.基本概念:
{}块,包含了一系列的表达式,其结果也是表达式(块中最后的表达式值,就是块的值)2.关键点: ~ 块:包含了一系列的表达式 ~ 块:块是有返回值的(块中最后的表达式的值,就是块的值)3.内容:# 变量:作用域的问题· 在block的变量只能在{}内可见· 在block的变量会隐藏在{}外的同名变量 => 假设你在block和block外面都定义相同名称的变量,那么块中的变量会隐藏{}外的变量
# 类型:返回值的问题 在scala中,赋值动作本身是没有值的,是Unit类型,表示为:(),类似于java中的void : 例: { r = r*n ; n-=1 } 返回的是一个Unit 对比: scala: val aa = { val bb:Int = 1 } res1: Unit = () 返回的是一个Unit 例: { var x:Int =0 ; var y:Int = 1 ; x = y = 2} error: 变量x 需要的是一个Int类型的值,而 y=2 返回的是一个Unit类型 在java中赋值语句的那个值是被赋的那个值,x = y = 1 是有意义的补充:· 在scala中val定义的变量为常量,必须在初始的时候进行赋值,赋值之后是不能在改变值· 在scala编程尽量少定义变量 => 函数式编程关键点:· 在定义函数的时候,块中的表达式一定要注意返回值的写法· 在scala中赋值语句的那个值是一个Unit的类型,而在java中赋值语句的那个值是被赋的那个值# 隐藏: 对某个val的初始化需要分多步完成的情况: 例:val distance={val dx=x-x0;val dy=y-y0;sqrt(dx*dx+dy*dy)}{}块的值取其最后一个表达式 ,量dx和dy仅作为计算所需要的中间值。