从新手到高手:Scala函数式编程完全指南,Scala 方法与函数(10)

1、Scala 方法与函数

Scala 有方法与函数,二者在语义上的区别很小。Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量。换句话来说在类中定义的函数即是方法。
Scala 中的方法跟 Java 的类似,方法是组成类的一部分。
Scala 中的函数则是一个完整的对象,Scala 中的函数其实就是继承了 Trait 的类的对象。
Scala 中使用 val 语句可以定义函数,def 语句定义方法。

class Test{
  def m(x: Int) = x + 3
  val f = (x: Int) => x + 3
}

注意:有些翻译上函数(function)与方法(method)是没有区别的。

1.1、方法声明

Scala 方法声明格式如下:

def functionName ([参数列表]) : [return type]

如果你不写等于号和方法主体,那么方法会被隐式声明为抽象(abstract),包含它的类型于是也是一个抽象类型。

1.2、方法定义

方法定义由一个 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 = 0
      sum = a + b

      return sum
   }
}

如果方法没有返回值,可以返回为 Unit,这个类似于 Java 的 void, 示例如下:

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

1.3、方法调用

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 = 0
      sum = a + b

      return sum
   }
}

执行以上代码,输出结果为:

Returned Value : 12

相关推荐

  1. 5 scala函数编程简介

    2024-07-13 19:30:01       46 阅读
  2. scala05-函数编程02

    2024-07-13 19:30:01       35 阅读
  3. scala05-函数编程01

    2024-07-13 19:30:01       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 19:30:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 19:30:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 19:30:01       58 阅读
  4. Python语言-面向对象

    2024-07-13 19:30:01       69 阅读

热门阅读

  1. Git:分布式版本控制系统

    2024-07-13 19:30:01       20 阅读
  2. Android Studio下载与安装

    2024-07-13 19:30:01       16 阅读
  3. 搭建项目时前后端的两个注意事项

    2024-07-13 19:30:01       16 阅读
  4. C语言 错题本

    2024-07-13 19:30:01       22 阅读
  5. 【SQL】MySQL 的死锁问题以及解决方式

    2024-07-13 19:30:01       20 阅读
  6. conda常用命令

    2024-07-13 19:30:01       22 阅读
  7. 卸载docker

    2024-07-13 19:30:01       19 阅读
  8. Redis的一个典型应用

    2024-07-13 19:30:01       16 阅读