scala函数定义的四种方式
最近开始接触scala编程语言,觉得还是比较新的一个东西,虽然说和java比较像,是java的继承者,兼顾面向对象编程和函数式编程的优点,但是,终究是一个新的东西,还是要从最基本的学起。而这当中,函数是scala语言的核心部分。
所以,今天,就只说函数的东西。下面是函数定义的基本语法:
def functionName ([list of parameters]) : [return type] = {
function body
return [expr]
}
其实,上面的return关键字是可以不需要的,scala编译器会自行推演,但是,为了函数的可读性,还是加上return比较好。
一个函数,若它不返回任何东西,这相当于在Java中返回void,并表示该函数不返回任何单元。Scala中不返回任何东西函数被称为过程。
scala的函数,有4种常见的风格,当然,这些风格是根据使用场景的不同来选择的。
下面直接上代码,在代码中带有注释,表达的比较清楚些:
package lession1 object functions { /*
* 写法一,始终待返回值
* 函数是否带有return没有关系,都会正常返回x+y的值。
*
* 写成下面的形式,也是对的:
* def add(x:Int,y:Int):Int={
* x+y
* }
*/
def add(x:Int,y:Int):Int={
return x+y
} /*
* 写法二,省略不是Unit类型的返回值类型;如果没有写返回值,则根据等号后面的内容进行类型推演
*/
def test(x:Int)={
x
} /*
* 写法三,省略等号,返回Unit
*/
def returnVoid(){
println("返回 void")
}
def returnUnit():Unit={
println("另外一种方法返回 void")
} /*
* 写法四:省略花括号,如果函数仅包含一条语句,那么连花括号都可以选择不写,这个就和java8中的lamda一样了。
*/
def max2(x: Int, y: Int) = if (x > y) x else y
def greet() = println("Hello, world!") /*
* 比较常见的main函数的写法是下面注释的这种,比较简洁,但是本例子中带有Unit类型,是为了说明用Unit来表达返回空。
*
* def main(args:Array[String]){
* println(add(1,2))
* println(test(1))
* returnUnit()
* }
*/
def main(args:Array[String]):Unit ={
println(add(1,2))
println(test(1))
returnUnit()
}
}
今天就写到此吧,本人一边学一边记录,上面的代码是测试验证过的。在Luna Scala版本的eclipse中执行过,没有问题!
scala函数定义的四种方式的更多相关文章
- js 函数定义的2种方式
js 函数定义的2种方式 CreateTime--2018年3月29日18:36:14 Author:Marydon 方式一: /** * 函数式声明 */ function mode() { c ...
- js 函数定义的两种方式以及事件绑定(扫盲)
一.事件(例如:onclick)绑定的函数定义放在jsp前面和放后面没影响 二. $(function() { function func(){}; }) onclick通过如下方式绑定事件到jsp中 ...
- js函数定义的三种方式
1.函数声明语法 function sum(num1, num2){ return num1 + num2; } 2.函数表达式定义 var sum = function (num1, num2){ ...
- 关于this绑定的四种方式
一.前言 我们每天都在书写着有关于this的javascript代码,似懂非懂地在用着.前阵子在看了<你不知道的JavaScript上卷>之后,也算是被扫盲了一边关于this绑定的四种方式 ...
- 函数调用的四种方式 和 相关的 --- this指向
this:表示被调用函数的上下文对象. arguments:表示函数调用过程中传递的所有参数. 这两个参数都是隐式的函数参数.会静默传递给函数,并且和函数体内显式声明的参数一样可正常访问. argum ...
- http协议里定义的四种常见数据的post方法
原文 https://blog.csdn.net/charlene0824/article/details/51199292 关于http协议里定义的四种常见数据的post方法,分别是: applic ...
- jQuery绑定事件的四种方式:bind、live、delegate、on
1.jQuery操作DOM元素的绑定事件的四种方式 jQuery中提供了四种事件监听方式,分别是bind.live.delegate.on,对应的解除监听的函数分别是unbind.die.undele ...
- 横向对比分析Python解析XML的四种方式
横向对比分析Python解析XML的四种方式 在最初学习PYTHON的时候,只知道有DOM和SAX两种解析方法,但是其效率都不够理想,由于需要处理的文件数量太大,这两种方式耗时太高无法接受. 在网络搜 ...
- Spark入Hbase的四种方式效率对比
一.方式介绍 本次测试一种采用了四种方式进行了对比,分别是:1.在RDD内部调用java API.2.调用saveAsNewAPIHadoopDataset()接口.3.saveAsHadoopDat ...
随机推荐
- linux下C语言中的flock函数用法 【转】
表头文件 #include<sys/file.h> 定义函数 int flock(int fd,int operation); 函数说明 flock()会依参数operation所指 ...
- Word embedding
https://en.wikipedia.org/wiki/Word_embedding 简言之,就是讲词汇或短语映射成实值特征向量.
- LeetCode Subsets (DFS)
题意: 给一个集合,有n个互不相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: DFS方法:由于集合中的元素是不可能出现相同的,所以不用解决相同的元素而导致重复统计. class Sol ...
- js中获取样式的俩种方法 style.color和style['color'] 区别
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Mysql时间戳函数
1.转换为时间戳 select unix_timestamp('2013-07-15 10-06-07') 如果参数为空,则为当前时间 2.转换为时间 select from_unixtime(tim ...
- 安装GD库解决ThinkPHP 验证码Call to undefined function Think\imagecreate()出错
在php中imagecreate函数是一个图形处理函数,主要用于新建一个基于调色板的图像了,然后在这个基础上我们可以创建一些图形数字字符之类的,但这个函数需要GD库支持,如果没有开启GD库使用时会提示 ...
- Linux之更好的使用Bash
http://www.awolau.com/linux/start-bash.html#more 接触过Linux的童鞋肯定会知道,在Linux操作系统环境下,命令行操作有时候给我们带来极大的帮助,对 ...
- JSON日期格式处理
protected static SerializeConfig mapping = new SerializeConfig(); private static String dateFormat; ...
- mysql 关联删除
参考网址:http://www.111cn.net/database/mysql/51146.htm 原网页广告太多,自己抄了下. 1.delete from t1 where 条件2.delete ...
- JS初学之-自定义属性(索引值)
重点:1.添加索引值的作用:建立匹配.对应的关系. 比如:使每一个按钮对应数组里的每一张图,arrImg[this.index]. 2.不要在for循环的函数里面使用i. 3.添加索引值的方法aBtn ...