scala表达式之块表达式

没有检索到摘要

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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仅作为计算所需要的中间值。

转载于:https://my.oschina.net/wii01/blog/919730

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值