scala函数定义与使用
2015-05-17 11:01
99 查看
1.scala函数的完整定义:
def 函数名 (参数名:参数类型):函数返回值类型 ={函数体}
2.必须选项:
def 函数名
此处为定义一个不带参数,不带返回值的函数:例如
def m{println("hello world")}
不带参数可以省略(),但是调用的时候就不可以以 函数名() 的方式调用
定义函数的时候带有(),调用的时候,可以使用 函数名() 或者直接函数名的方式调用函数
可以直接通过m调用
3.带参数:
def m(str:String){println(str)}
4.带返回值:
如果函数体简单,可以不要{}
如果不是递归调用,scala会自动推测返回值类型,所以可以不指定返回值类型:
def m(str:String)=str
也可以明确指定返回值类型
def m(str:String):String ={str}
5.匿名函数
如果一个函数没有名称,那么这样的函数就称为匿名函数,定义的格式为:
(参数名:参数类型) => 表达式
6.闭包
闭包是可以包含自由(未绑定)变量的代码块;这些变量不是在这个代码块或者任何全局上下文中定义的,而是在定义代码块的环境中定义。
说了半天,怎么我觉得,闭包就是作用域?
val sum=(x:Int) => x+y //not found value y
编程通过:
val y = 1//scala定义变量,必须初始化?
val sum = (x: Int) => x + y
反正别人说了一大堆,没看懂:
编译通过是因为在值函数外面声明了一个全局变量,然后值函数中的y捕获了这个全局变量,从而是x+y变成一个正常的函数定义,从而让函数的定义闭合起来,这就是闭包。
def 函数名 (参数名:参数类型):函数返回值类型 ={函数体}
2.必须选项:
def 函数名
此处为定义一个不带参数,不带返回值的函数:例如
def m{println("hello world")}
不带参数可以省略(),但是调用的时候就不可以以 函数名() 的方式调用
定义函数的时候带有(),调用的时候,可以使用 函数名() 或者直接函数名的方式调用函数
可以直接通过m调用
3.带参数:
def m(str:String){println(str)}
4.带返回值:
如果函数体简单,可以不要{}
如果不是递归调用,scala会自动推测返回值类型,所以可以不指定返回值类型:
def m(str:String)=str
也可以明确指定返回值类型
def m(str:String):String ={str}
5.匿名函数
如果一个函数没有名称,那么这样的函数就称为匿名函数,定义的格式为:
(参数名:参数类型) => 表达式
6.闭包
闭包是可以包含自由(未绑定)变量的代码块;这些变量不是在这个代码块或者任何全局上下文中定义的,而是在定义代码块的环境中定义。
说了半天,怎么我觉得,闭包就是作用域?
val sum=(x:Int) => x+y //not found value y
编程通过:
val y = 1//scala定义变量,必须初始化?
val sum = (x: Int) => x + y
反正别人说了一大堆,没看懂:
编译通过是因为在值函数外面声明了一个全局变量,然后值函数中的y捕获了这个全局变量,从而是x+y变成一个正常的函数定义,从而让函数的定义闭合起来,这就是闭包。
相关文章推荐
- scala学习(3)——函数的定义和使用
- Scala 函数和方法的定义与使用
- scala 函数定义使用
- spark-scala 函数定义
- Scala定义函数的5种方式
- Scala方法定义,方法和函数的区别,将方法转换成函数
- Python 函数定义和使用
- react中函数的定义和使用
- C++函数的定义与使用
- memset函数定义及其使用
- 关于MySQL的存储函数(自定义函数)的定义和使用方法详解
- Scala定义函数的5种方式
- C++ 预定义函数对象和函数适配器的使用(二)
- Go语言中函数的定义与使用
- Python函数定义和使用
- php 函数使用方法与函数定义方法
- PowerShell使用枚举变量定义带智能提示功能的函数参数
- javascript入门系列演示·函数的定义以及简单参数使用,调用函数
- javascript入门系列演示·函数的定义以及简单参数使用,调用函数 .txt
- 惰性函数定义模式 使用方法第1/3页