[原创]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)函数是有值的,所以函数可以作为另外一个函数的参数
[原创]Scala学习:函数的定义的更多相关文章
- Scala学习——函数
一.函数的定义(def) object FunctionApp { //定义函数:方法体内最后一行为返回值,不需要使用return def add(a:Int,b:Int):Int={ a + b } ...
- [原创]Scala学习:数组的基本操作,数组进阶操作,多维数组
1.Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合.数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合 2 声明数组变量: 要使用的程序的数组 ...
- [原创]Scala学习:for,function,lazy
1.for循环是一个循环控制结构,可以有效地编写需要执行的特定次数的循环.Scalar的循环说明如下的各种形式: 1)Scala中for循环最简单的语法是: for( var x <- Rang ...
- [原创]Scala学习:Tuple,Array,Map ,文件操作
1.Tuple:元祖.是一个有用的容器对象. 1)特点: ① 元祖是不可变的,即,当声明完了一个元祖,那么它的长度就不可以在改变: ② 元祖可以包含不同类型的数据,对象: ③ 索引是从 '_1 ...
- [原创]Scala学习:关于变量(val,var,类型推断)
1.常量定义: val val 类似于java中的final变量.一旦初始化了,val就不能再被赋值 val megs = "hello world" 2.变量的定义: var ...
- Scala学习——函数高级操作
scala函数高级操作 一.字符串高级操作 多行字符串和插值 package top.ruandb.scala.Course06 object StringApp { def main(args: A ...
- scala 学习笔记九 定义操作符
Scala中方法名可以包含几乎所有字符,还可以对操作符+赋予新的含义 上面例子中136行,用下划线来表示“缺省初始化值” 上面151行和153行都是通过圆点表示法进行调用 157行和159行用中缀表示 ...
- [原创]Scala学习:流程控制,异常处理
1.流程控制 1)do..while def doWhile(){ var line="" do{ line = readLine() println("readline ...
- [原创]Scala学习:编写Scala脚本
scala支持脚本 1)在/opt/scala-script下创建一个文件hello.scala 编辑内容如下: $ hello ,this is the first scala script 2)运 ...
随机推荐
- leetcode isPalindrome (回文数判断)
回文很简单,就是正着读和反着读一样,要判断一个数是否为回文数只需要判断正反两个是不是相等即可. 再往深了想一下,只需要判断从中间分开的两个数一个正读,一个反读相等即可. 代码: class Solut ...
- firewalld实现网关功能
用ip a查看自己的路由服务器接口,一个外网接口 wan ,还有内网接口: 我这里是一块网卡,配了一个虚拟ip,eth0: wan口 eth0:1 lan口 注意:要注意顺序,先将接口加到zone ...
- Java 多线程 并发编程 (转)
一.多线程 1.操作系统有两个容易混淆的概念,进程和线程. 进程:一个计算机程序的运行实例,包含了需要执行的指令:有自己的独立地址空间,包含程序内容和数据:不同进程的地址空间是互相隔离的:进程拥有各种 ...
- js中删除数组元素的几种方法
1:js中的splice方法 splice(index,len,[item]) 注释:该方法会改变原始数组. splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值 inde ...
- js识别不同浏览器
检測浏览器.注意浏览器推断顺序,主要是基于userAgent做推断. //检測浏览器 var client = function(){ var engine = { ie:0, ...
- NoHostAvailableException: All host(s) tried for query failed (no host was tried)
NoHostAvailableException: All host(s) tried for query failed (no host was tried) cassandra连接报错:tried ...
- Hadoop2.6.0子项目hadoop-mapreduce-examples的简介
引文 学习Hadoop的同学们,一定知道假设执行Hadoop自带的各种样例,以大名鼎鼎的wordcount为例,你会输入下面命令: hadoop org.apache.hadoop.examples. ...
- pip或者anacnda安装opencv以及opencv-contrib
一条命令就可以搞定: pip install opencv-contrib-python opencv-python 或者: pip install opencv-contrib-python== ...
- php获取post内容方式
PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型. php获取post参数的几种方式 1.$_POST['paramName'] 只能接收Co ...
- Google Code Jam 2014 Round 1 A:Problem C. Proper Shuffle
Problem A permutation of size N is a sequence of N numbers, each between 0 and N-1, where each numbe ...