博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scala表达式之块表达式
阅读量:6181 次
发布时间:2019-06-21

本文共 830 字,大约阅读时间需要 2 分钟。

  hot3.png

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

你可能感兴趣的文章
手机流量偷跑调查:使用习惯不当或软件出问题
查看>>
微软称美国政府索取用户信息次数上升:至少1000次
查看>>
百度安全报告:企业DDoS军备赛正从六大武器到人脑博
查看>>
寻求技术创新的现代数据中心
查看>>
混合云中容器编排引擎的好处
查看>>
《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一 1.11 总结...
查看>>
大牛教你利用AI驱动广告自动化投放
查看>>
三星集团家族式管理遭投资者施压 为增强透明性三星电子或分拆上市
查看>>
人脸检测发展:从VJ到深度学习(下)
查看>>
唱衰联想之人显然别有用心
查看>>
广东自贸区金融物联网新进展:广清所建类标准仓单
查看>>
5G网络将率先落地北京张家口
查看>>
欧盟、美国就最终版隐私盾协议达成一致
查看>>
思维导图FreeMind
查看>>
《编程原本 》一第1 章 基础
查看>>
《Android的设计与实现:卷I》——第3章 3.2Kernel启动过程
查看>>
Tensorflow 全网最全学习资料汇总之Tensorflow 的入门与安装【2】
查看>>
光伏+特斯拉电池成本已低于电网
查看>>
SUV世家广汽三菱,牵手微信企业号打造学习型企业
查看>>
物联网带动传感器站上风口 华灿光电并购美新半导体
查看>>