当前位置: 首页 > 文档资料 > Scala 中文文档 >

功能( Functions)

优质
小牛编辑
125浏览
2023-12-01

函数是执行任务的一组语句。 您可以将代码划分为单独的函数。 如何在不同的函数之间划分代码取决于您,但从逻辑上讲,除法通常是每个函数执行特定任务。

Scala既有函数又有方法,我们使用术语方法和函数可以互换,只有细微差别。 Scala方法是类的一部分,它具有名称,签名,可选的一些注释和一些字节码,其中Scala中的函数是可以分配给变量的完整对象。 换句话说,被定义为某个对象的成员的函数称为方法。

函数定义可以出现在源文件中的任何位置,Scala允许嵌套函数定义,即其他函数定义中的函数定义。 最重要的一点是,Scala函数的名称可以包含+,++,〜,&, - , - ,\,/,等等字符。

函数声明 (Function Declarations)

Scala函数声明具有以下形式 -

def functionName ([list of parameters]) : [return type]

如果不使用等号和方法体,则隐式声明方法为abstract

功能定义

Scala函数定义具有以下形式 -

语法 (Syntax)

def functionName ([list of parameters]) : [return type] = {
   function body
   return [expr]
}

这里, return type可以是任何有效的Scala数据类型list of parameters将是由逗号分隔的变量列表,参数列表和返回类型是可选的。 与Java非常相似, return语句可以与表达式一起使用,以防函数返回值。 以下是将添加两个整数并返回其总和的函数 -

语法 (Syntax)

object add {
   def addInt( a:Int, b:Int ) : Int = {
      var sum:Int = 0
      sum = a + b
      return sum
   }
}

一个不返回任何东西的函数可以返回一个相当于Java中的voidUnit ,并指示该函数不返回任何内容。 在Scala中没有返回任何内容的函数,它们被称为过程。

语法 (Syntax)

这是语法 -

object Hello{
   def printMe( ) : Unit = {
      println("Hello, Scala!")
   }
}

Calling 函数

Scala为调用方法提供了许多语法变体。 以下是调用方法的标准方法 -

functionName( list of parameters )

如果使用对象的实例调用函数,那么我们将使用类似于Java的点符号,如下所示 -

[instance.]functionName( list of parameters )

尝试以下示例程序来定义然后调用相同的函数。

例子 (Example)

object Demo {
   def main(args: Array[String]) {
      println( "Returned Value : " + addInt(5,7) );
   }
   def addInt( a:Int, b:Int ) : Int = {
      var sum:Int = 0
      sum = a + b
      return sum
   }
}

将上述程序保存在Demo.scala 。 以下命令用于编译和执行此程序。

Command

\>scalac Demo.scala
\>scala Demo

输出 (Output)

Returned Value : 12

Scala函数是Scala编程的核心,这也是Scala被假定为函数式编程语言的原因。 以下是与Scala函数相关的一些重要概念,Scala程序员应该理解这些概念。

函数Call-by-Name具有命名参数的函数
具有变量参数的函数递归函数
默认参数值高阶函数
嵌套函数匿名函数
部分应用功能Currying功能