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 函数声明及调用案例详解相关推荐

  1. 简述python函数调用过程_python函数定义和调用过程详解

    我们可以创建一个函数来列出费氏数列 >>> def fib(n): # write Fibonacci series up to n ... """Pr ...

  2. python函数定义及调用-python函数声明和调用定义及原理详解

    这篇文章主要介绍了python函数声明和调用定义及原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 函数是指代码片段,可以重复调用,比如我们前 ...

  3. python函数声明和调用定义及原理详解

    这篇文章主要介绍了python函数声明和调用定义及原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 函数是指代码片段,可以重复调用,比如我们前 ...

  4. java调用javascript函数_[Java教程]JavaScript函数的4种调用方法详解

    [Java教程]JavaScript函数的4种调用方法详解 0 2016-08-09 00:00:12 在JavaScript中,函数是一等公民,函数在JavaScript中是一个数据类型,而非像C# ...

  5. Delphi调用外部程序函数:WinExec() 和ShellExecute详解

    2019独角兽企业重金招聘Python工程师标准>>> Delphi调用外部程序函数:WinExec() 和ShellExecute详解 1,WinExec(): WinExec主要 ...

  6. 【虚幻引擎UE】UE5 三种模式调用API详解(案例基于免费Varest插件)

    [虚幻引擎UE]UE5 三种模式调用API详解(案例基于免费Varest插件) 想通过UE5 调用API实现GET和POST, 可以通过自己编写C++方法, 或基于相关HTTP请求插件, 如Vares ...

  7. pandas:案例详解 rename函数 修改列名和行名

    pandas:案例详解rename函数 修改列名和索引 rename函数简介 0 构建学习数据 1 修改索引两种方式 2 修改列名两种方式 3 是否替换原列表 3 pandas 字母转换大小写 3 使 ...

  8. 代码检查规则:Python语言案例详解

    在之前的文章中代码检查规则:Java语言案例详解学习了Java的检查规则.我们今天将学习<代码检查规则:Python语言案例详解>,内容主要分为两个部分:Python的代码检查规则和Pyt ...

  9. 代码检查规则:Java语言案例详解

    本节课程为<代码检查规则:Java语言案例详解>, 通常情况下Java的代码检查规则可以分为以下十类: 接下来,让我们具体来看看每个分类的内容. 一.源文件规范 该类规范主要从文件名.文件 ...

最新文章

  1. 相爱相杀:程序员的数学
  2. Matplotlib实例教程(十一)堆栈图
  3. Objective-C 文件夹操作
  4. 荣耀50系列外观配置抢先看:售价成唯一悬念
  5. GitLab CI/CD 快速开始
  6. 鼠标滑轮滚动到相应位置,对应位置的div触发一些效果实现方式
  7. 计算一的阶乘累加到十的阶乘
  8. 吴恩达深度学习第一周课程学习笔记
  9. 利用布尔运算可以做出怎样的PPT特效
  10. foo, bar, 甲乙丙丁
  11. android 取消指纹识别,Android 指纹识别
  12. discuz远征游戏通用网站模板
  13. 如何管理好技术团队的十六点建议
  14. BZOJ 1106: [POI2007]立方体大作战tet
  15. 全闪存存储的数据库加速场景应用
  16. PAD存储过程以及相关的高级调用
  17. 揭秘组件库一二事(上)
  18. 7-2 词典 (15分)19物联网张春
  19. Firebase 教程 —— 一个实时聊天室
  20. 切换上下首音乐功能的实现(消息订阅与发布的使用)

热门文章

  1. speex 编译(转)
  2. Debug Pytorch: ValueError: Expected more than 1 value per channel when training, got input size tor
  3. Java基础day2
  4. C指针原理(31)-Ncurses-文本终端的图形
  5. 21-5-22校赛G 自行车调度
  6. 【学术】考博中你最关心的那些问题,博导给你答案!
  7. 【深度学习】你有哪些深度学习(RNN、CNN)调参的经验?
  8. 【机器学习基础】前置知识(五):30分钟掌握常用Matplotlib用法
  9. 【数据分析】用于数据分析的8个SQL技术
  10. 叫我如何相信你?聊一聊语言模型的校准