zoukankan      html  css  js  c++  java
  • 3、scala函数入门

    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是非常相似的。

      

      

  • 相关阅读:
    通过docker-composer启动容器nginx,并完成spring.boot的web站点端口转发
    手写redis的docker文件,通过docker-compose配置redis
    基于Docker Compose搭建mysql主从复制(1主2从)
    ubuntu 14.04 挂载window共享目录
    asp.net mvc,基于aop实现的接口访问统计、接口缓存等
    自定义属性Attribute的运用
    表值参数的使用
    js的title提示
    Android之ViewPager中包含ViewFlipper时实现双滑动嵌套解决父控件干扰问题
    Android之ViewFlipper实现手动+自动切换图片(附加动画效果)
  • 原文地址:https://www.cnblogs.com/haisongvip/p/9526628.html
Copyright © 2011-2022 走看看