zoukankan      html  css  js  c++  java
  • [原创]Scala学习:函数的定义

    方式一:标准的定义函数
      def 函数名(参数1: 参数类型,参数2: 参数类型): 返回值类型 = {
          函数体
      }

    例子
      def max(x: Int,y: Int): Int ={
          if(x > y) x
          else y
      }

    注意:参数列表中必须标注好参数类型,因为scala编译器无法推断参数的类型

    方式二:在一般的情况下可以省略,函数返回值的类型
      def 函数名(参数1: 参数类型,参数2: 参数类型) = {
          函数体
      }


      def max(x: Int,y: Int) = {
        if(x > y) x
        else y
      }
    或者 将大括号也可以省略
      def max(x: Int,y: Int) = if(x > y) x else y

    注意:scala中,在函数递归的时候,必须指明返回值的类型;其他框架或者系统,可以不用指明函数的返回值

    方式三:既不带参数也不带返回值有用结果的定义函数


      scala> def greet() = println("hello world")
      greet: ()Unit
      Unit是函数greet的记过类型,指的是函数没有有效的返回值,scala中的Unit类型比较于java中的viod类型,而实际上java中返回void的方法都会被映射为返回Unit的scala方法
      结果类型为Unit的方法,并非是为了得到返回值,而是为了其他的运行效果(side effect)

    匿名函数:函数常见的 形式,关注于函数的计算。分析:因为函数是有值的,所以我们将函数赋值给一个常量

      val add = (x: Int) => x+100  // 声明匿名函数

      println(add(2))  //调用匿名函数

     可变参数的函数定义:* 表示

      def con(args: Int*) = {

        var result = 0

        for(arg <- args) result += arg

        result 

      }

      println("result" + con(1,2,3,4))

    注意:

    1)函数是有值的,所以函数可以作为另外一个函数的参数

  • 相关阅读:
    HDU:2767-Proving Equivalences(添边形成连通图)
    POJ:1330-Nearest Common Ancestors(LCA在线、离线、优化算法)
    HDU:1269-迷宫城堡(tarjan模板)
    Xml 丶json丶 C/S KVO 数据库 SQL 数据持久化 复杂对象 集合视图综合
    项目穿越记
    SDP (Session Description Protocol)
    shell脚本实现查找文件夹下重复的文件,并提供删除功能
    HDU 2896 病毒侵袭 (AC自动机)
    项目启动那些事儿
    C++ 完美破解九宫格(数独)游戏
  • 原文地址:https://www.cnblogs.com/jasonHome/p/5510667.html
Copyright © 2011-2022 走看看