方式一:标准的定义函数
  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)函数是有值的,所以函数可以作为另外一个函数的参数

[原创]Scala学习:函数的定义的更多相关文章

  1. Scala学习——函数

    一.函数的定义(def) object FunctionApp { //定义函数:方法体内最后一行为返回值,不需要使用return def add(a:Int,b:Int):Int={ a + b } ...

  2. [原创]Scala学习:数组的基本操作,数组进阶操作,多维数组

    1.Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合.数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合 2 声明数组变量: 要使用的程序的数组 ...

  3. [原创]Scala学习:for,function,lazy

    1.for循环是一个循环控制结构,可以有效地编写需要执行的特定次数的循环.Scalar的循环说明如下的各种形式: 1)Scala中for循环最简单的语法是: for( var x <- Rang ...

  4. [原创]Scala学习:Tuple,Array,Map ,文件操作

    1.Tuple:元祖.是一个有用的容器对象. 1)特点:  ① 元祖是不可变的,即,当声明完了一个元祖,那么它的长度就不可以在改变:  ② 元祖可以包含不同类型的数据,对象:   ③ 索引是从 '_1 ...

  5. [原创]Scala学习:关于变量(val,var,类型推断)

    1.常量定义:  val val 类似于java中的final变量.一旦初始化了,val就不能再被赋值 val megs = "hello world" 2.变量的定义: var ...

  6. Scala学习——函数高级操作

    scala函数高级操作 一.字符串高级操作 多行字符串和插值 package top.ruandb.scala.Course06 object StringApp { def main(args: A ...

  7. scala 学习笔记九 定义操作符

    Scala中方法名可以包含几乎所有字符,还可以对操作符+赋予新的含义 上面例子中136行,用下划线来表示“缺省初始化值” 上面151行和153行都是通过圆点表示法进行调用 157行和159行用中缀表示 ...

  8. [原创]Scala学习:流程控制,异常处理

    1.流程控制 1)do..while def doWhile(){ var line="" do{ line = readLine() println("readline ...

  9. [原创]Scala学习:编写Scala脚本

    scala支持脚本 1)在/opt/scala-script下创建一个文件hello.scala 编辑内容如下: $ hello ,this is the first scala script 2)运 ...

随机推荐

  1. ubuntu下Tomcat绑定80端口

    转载自:https://www.2cto.com/os/201102/84081.html   工作环境迁移到了Ubuntu,很多东西发生了变化,比如原先配置tomcat端口.只需要配置server. ...

  2. Install RabbitMQ server in CentOS 7

    About RabbitMQ RabbitMQ is an open source message broker software, also sometimes known as message-o ...

  3. Dalvik opcodes 查询smali语法大全

    原文链接:http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html Vx values in the table denote a Dalvik ...

  4. UITextView被键盘遮挡的处理

    这个应该是一个通用的任务了吧,键盘弹出来的时候,UITextView(或者UITextField)会被遮挡. 解决的办法就不是很能通用了. 1. 如果有UIScrollView做父view的话只需要滚 ...

  5. 使用PostMan快速生成代码

    Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.关于PostMan的下载和使用网上有很多相关的博客介绍,本文主要介绍PostMan在进行模拟Http请求后可以根据需要的 ...

  6. iostat命令分析磁盘io

    1.安装 yum install sysstat 2.参数 建议将man 文档看一遍 3.简单判断io状况 iostat -d -k 2 -x Device: rrqm/s wrqm/s r/s w/ ...

  7. Ubuntu 16.04.5下FFmpeg编译与开发环境搭建

    PC环境: Ubuntu 18.04 上面只要安装下面的提示安装即可,基本上不必再下载依赖库的源代码进行编译和安装 编译步骤: 1, 安装相关工具: sudo apt  install -y auto ...

  8. linux应用网址

    APUE学习:(十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字 linux应用学习笔记(已列目录供跳转):http://www.cnblogs.com/ggj ...

  9. docker-maven-plugin

    顾名思义,docker-maven-plugin是一个docker的maven插件,用来执行docker镜像的制作和上传,他的地址是https://github.com/spotify/docker- ...

  10. ios NavigationViewController跳转以及返回传值

    (一)使用NavigationViewController进行页面跳转时,应该使用pushViewController方法来跳转至下一页面.这种话.下一页面相同在NavigationViewContr ...