[原创]Scala学习:函数的定义
2016-05-19 23:44
232 查看
方式一:标准的定义函数
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)函数是有值的,所以函数可以作为另外一个函数的参数
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)函数是有值的,所以函数可以作为另外一个函数的参数
相关文章推荐
- 当try和finally里都有return时,会忽略try的return,而使用finally的return
- 小代码 栈之合法性一点思路 不一样的际遇
- HDU 3247 Resource Archiver
- hdu 2894 欧拉回路
- boost的shared_ptr循环引用(1)
- C/C++实现多个数的拼接(组合)成最大数字
- bat和python批量重命名文件的实现代码
- Android开发--所有动画使用详解
- LeetCode OJ 26. Remove Duplicates from Sorted Array
- 6 单例模式与线程池
- Xamarin.Forms学习之初
- 主键和外键
- VS2013搭建OpenGL环境
- CSS基本样式
- zookeeper集群搭建设置
- 内部类的理解
- zookeeper集群搭建设置
- spring配置出错at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:244
- 反思
- ios开发总结之坐标系转换