Scala 函数声明及调用案例详解
Scala 函数
函数是一组一起执行一个任务的语句。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的。
Scala 有函数和方法,二者在语义上的区别很小。Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量。换句话来说在类中定义的函数即是方法。
我们可以在任何地方定义函数,甚至可以在函数内定义函数(内嵌函数)。更重要的一点是 Scala 函数名可以有以下特殊字符:+, ++, ~, &,-, – , , /, : 等。
函数声明
Scala 函数声明格式如下:
def functionName ([参数列表]) : [return type]
如果你不写等于号和方法主体,那么方法会被隐式声明为"抽象(abstract)",包含它的类型于是也是一个抽象类型。
函数定义
方法定义由一个def 关键字开始,紧接着是可选的参数列表,一个冒号":" 和方法的返回类型,一个等于号"=",最后是方法的主体。
Scala 函数定义格式如下:
def functionName ([参数列表]) : [return type] = {function body return [expr]}
以上代码中 return type 可以是任意合法的 Scala 数据类型。参数列表中的参数可以使用逗号分隔。
以下函数的功能是将两个传入的参数相加并求和:
object add{def addInt( a:Int, b:Int ) : Int = {var sum:Int = 0sum = a + b return sum }}
如果函数没有返回值,可以返回为 Unit,这个类似于 Java 的 void, 实例如下:
object Hello{def printMe( ) : Unit = {println("Hello, Scala!")}}
函数调用
Scala 提供了多种不同的函数调用方式:
以下是调用方法的标准格式:
functionName( 参数列表 )
如果函数使用了实例的对象来调用,我们可以使用类似java的格式 (使用 . 号):
[instance.]functionName( 参数列表 )
以上实例演示了定义与调用函数的实例:
object Test {def main(args: Array[String]) {println( "Returned Value : " + addInt(5,7) );}def addInt( a:Int, b:Int ) : Int = {var sum:Int = 0sum = a + b return sum }}
执行以上代码,输出结果为:
$ scalac Test.scala
$ scala TestReturned Value : 12
Scala也是一种函数式语言,所以函数是 Scala 语言的核心。以下一些函数概念有助于我们更好的理解 Scala 编程:
函数概念解析接案例 | ||
---|---|---|
函数传名调用(Call-by-Name) | 指定函数参数名 | |
函数 - 可变参数 | 递归函数 | |
默认参数值 | 高阶函数 | |
内嵌函数 | 匿名函数 | |
偏应用函数 | 函数柯里化(Function Currying) |
Scala 函数声明及调用案例详解相关推荐
- 简述python函数调用过程_python函数定义和调用过程详解
我们可以创建一个函数来列出费氏数列 >>> def fib(n): # write Fibonacci series up to n ... """Pr ...
- python函数定义及调用-python函数声明和调用定义及原理详解
这篇文章主要介绍了python函数声明和调用定义及原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 函数是指代码片段,可以重复调用,比如我们前 ...
- python函数声明和调用定义及原理详解
这篇文章主要介绍了python函数声明和调用定义及原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 函数是指代码片段,可以重复调用,比如我们前 ...
- java调用javascript函数_[Java教程]JavaScript函数的4种调用方法详解
[Java教程]JavaScript函数的4种调用方法详解 0 2016-08-09 00:00:12 在JavaScript中,函数是一等公民,函数在JavaScript中是一个数据类型,而非像C# ...
- Delphi调用外部程序函数:WinExec() 和ShellExecute详解
2019独角兽企业重金招聘Python工程师标准>>> Delphi调用外部程序函数:WinExec() 和ShellExecute详解 1,WinExec(): WinExec主要 ...
- 【虚幻引擎UE】UE5 三种模式调用API详解(案例基于免费Varest插件)
[虚幻引擎UE]UE5 三种模式调用API详解(案例基于免费Varest插件) 想通过UE5 调用API实现GET和POST, 可以通过自己编写C++方法, 或基于相关HTTP请求插件, 如Vares ...
- pandas:案例详解 rename函数 修改列名和行名
pandas:案例详解rename函数 修改列名和索引 rename函数简介 0 构建学习数据 1 修改索引两种方式 2 修改列名两种方式 3 是否替换原列表 3 pandas 字母转换大小写 3 使 ...
- 代码检查规则:Python语言案例详解
在之前的文章中代码检查规则:Java语言案例详解学习了Java的检查规则.我们今天将学习<代码检查规则:Python语言案例详解>,内容主要分为两个部分:Python的代码检查规则和Pyt ...
- 代码检查规则:Java语言案例详解
本节课程为<代码检查规则:Java语言案例详解>, 通常情况下Java的代码检查规则可以分为以下十类: 接下来,让我们具体来看看每个分类的内容. 一.源文件规范 该类规范主要从文件名.文件 ...
最新文章
- 相爱相杀:程序员的数学
- Matplotlib实例教程(十一)堆栈图
- Objective-C 文件夹操作
- 荣耀50系列外观配置抢先看:售价成唯一悬念
- GitLab CI/CD 快速开始
- 鼠标滑轮滚动到相应位置,对应位置的div触发一些效果实现方式
- 计算一的阶乘累加到十的阶乘
- 吴恩达深度学习第一周课程学习笔记
- 利用布尔运算可以做出怎样的PPT特效
- foo, bar, 甲乙丙丁
- android 取消指纹识别,Android 指纹识别
- discuz远征游戏通用网站模板
- 如何管理好技术团队的十六点建议
- BZOJ 1106: [POI2007]立方体大作战tet
- 全闪存存储的数据库加速场景应用
- PAD存储过程以及相关的高级调用
- 揭秘组件库一二事(上)
- 7-2 词典 (15分)19物联网张春
- Firebase 教程 —— 一个实时聊天室
- 切换上下首音乐功能的实现(消息订阅与发布的使用)
热门文章
- speex 编译(转)
- Debug Pytorch: ValueError: Expected more than 1 value per channel when training, got input size tor
- Java基础day2
- C指针原理(31)-Ncurses-文本终端的图形
- 21-5-22校赛G 自行车调度
- 【学术】考博中你最关心的那些问题,博导给你答案!
- 【深度学习】你有哪些深度学习(RNN、CNN)调参的经验?
- 【机器学习基础】前置知识(五):30分钟掌握常用Matplotlib用法
- 【数据分析】用于数据分析的8个SQL技术
- 叫我如何相信你?聊一聊语言模型的校准