1、定义函数

2、在代码块中定义函数体

3、递归函数与返回类型

4、默认参数

5、带名参数

6、变长参数

7、使用序列调用变长参数 

8、过程

9、lazy值             

10、异常

1、  定义函数

  在scala中定义函数时,需要定义函数的函数名、参数、函数体。

  Scala要求给出所有参数的类型,但不一定给出返回值类型,只要右侧的函数体中不包含递归的语句,scala就可以根据右侧的表达式推断出返回类型。

  

2、在代码块中定义函数体

  单行的函数

  

  如果函数体中存在多行代码,则可以使用代码块的方式包裹多行代码,代码块最后一行的返回值就是整个函数的返回值。(与java使用return不同)

  

3、递归函数与返回类型

  如果函数体内递归调用函数自身,必须手动给出函数的返回类型。如经典的斐波那契数列

  

4、默认参数

  在scala中有时我们调用某些函数时,不希望给出参数的具体值,而希望使用参数自身默认的值,此时就定义在定义函数时使用默认参数。

  如果给出的参数不够,则会从左往右依次应用参数。

  

5、带名参数

  在调用函数时,可以不按照参数顺序传递函数,而是使用带名参数的方式传递。

  还可以混合使用过未命名参数和带名参数,但是未命名参数必须排在带名参数前面。

  

6、变长参数

  Scala中,我们需要将函数定义为参数个数可变的形式,此时可以使用变长参数定义函数。

  

7、使用序列调用变长参数

  如果想将一个已有的序列直接调用变长参数函数,是不对的。

  此时需要使用scala特殊的语法将参数定义为序列,让scala解释器识别。如图

  

8、过程

  在scala中定义函数时,如果函数体直接包裹在花括号里面,而没有使用=连接,则函数的返回值类型即使Unit。这样的函数被称之为过程。过程通常用于不需要返回值的函数。

  过程还有一种写法,就是将函数的返回值类型定义为Unit。

  

9、lazy值

  Scala中,提供lazy值的特性,如果将一个变量声明为lazy,则只有在第一次使用该变量时,变量对应的表达式才会发生计算。这种特性对特别耗时的计算操作特别有用,比如打开文件进行IO,进行网络IO等。

  

10、异常

  在scala中,异常处理和捕获机制与java是非常相似的。

  

  

最新文章

  1. 安装第三方APP好的站点及解除安全与隐私限制
  2. Windows Live Writer发布测试
  3. [BZOJ1016][JSOI2008]最小生成树计数(结论题)
  4. JZOJ P1817:[8.27]研究性学习作业
  5. webApp前端开发技巧总结
  6. php中static静态关键字的使用
  7. 151. Reverse Words in a String
  8. winform 防止多開
  9. alibaba笔试3
  10. cenots 下的 lamp(备份与恢复)
  11. Leetcode 线性表 Swap Nodes in Pairs
  12. TForm类有关属性简介
  13. String,StringBuffer,StringBuilder个人认为较重要的区别
  14. Grid move
  15. mysql 5.7 enable binlog
  16. 微信小程序之弹出操作菜单
  17. windows集群简单介绍
  18. Python常见字符编码间的转换
  19. 转载《ionic 热更新 cordova-hot-code-push》
  20. Oracle卸载后手工删除内容

热门文章

  1. 第五节:DataFrame聚合函数
  2. 【Codeforces 349B】Color the Fence
  3. 【hdu 2108】Shape of HDU
  4. 【[Offer收割]编程练习赛14 D】剑刃风暴(半径为R的圆能够覆盖的平面上最多点数目模板)
  5. 敏捷开发系列学习总结(4)—Git管理工具sourcetree的安装
  6. PatentTips - Invalidating TLB entries in a virtual machine system
  7. Servlet请求参数编码处理(POST & GET)
  8. [转]十五天精通WCF——第十三天 用WCF来玩Rest
  9. 微信小程序的小问题(1)
  10. hdu 1010 Tempter of the Bone (奇偶性剪枝)