scala (9)-----Scala 函数

zz/2024/6/13 20:56:42

        函数是一组一起执行一个任务的语句。您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的。

Scala 有函数和方法,二者在语义上的区别很小。Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量。换句话来说在类中定义的函数即是方法。

我们可以在任何地方定义函数,甚至可以在函数内定义函数(内嵌函数)。更重要的一点是 Scala 函数名可以有以下特殊字符:+, ++, ~, &,-, -- , \, /, : 等。


函数声明

Scala 函数声明格式如下:

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

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


函数定义

方法定义由一个def 关键字开始,紧接着是可选的参数列表,一个冒号":" 和方法的返回类型,一个等于号"=",最后是方法的主体。

Scala 函数定义格式如下:


def functionName ([参数列表]) : [return type] = {function bodyreturn [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 + breturn sum}
}

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

Returned Value : 12

Scala也是一种函数式语言,所以函数是 Scala 语言的核心。




http://www.ngui.cc/zz/2748861.html

相关文章

Neo4j CQL - (12)-SET子句

有时,根据我们的客户端要求,我们需要向现有节点或关系添加新属性。 要做到这一点,Neo4j CQL提供了一个SET子句。 Neo4j CQL已提供SET子句来执行以下操作。 向现有节点或关系添加新属性添加或更新属性值 SET子句语法: SET &l…

第4章 基于概率论的分类方法:朴素贝叶斯

朴素贝叶斯 概述 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。本章首先介绍贝叶斯分类算法的基础——贝叶斯定理。最后,我们通过实例来讨论贝叶斯分类的中最简单的一种: 朴素贝叶斯分类。 贝叶斯理论…

java 根据字符串得到该字符串首写的拼音码列表

添加maven依赖 <dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version></dependency> 也可以自己自己下载jar包 import net.sourceforge.pinyin4j.PinyinHelper; import…

java json 间的互相转化,工具化转化,代码少

java json 间的互相转化, 主要通过 alibaba 的 fastjson 来转化 package test.json;import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject;import java.io.IOException; import java.text.ParseException; import java.util.List;/*** Author:zzh Email…

springboot 启动异常 javax/servlet/ServletContext Unable to start embedded container; nested exception is

场景描述 项目中用到spring boot进行带页面的开发&#xff0c;从github上的simples中下载了对应的spring-boot-sample-web-jsp项目&#xff0c;经简单修改之后死活启动不起来&#xff0c;各种异常。spring-boot以简单容易上手为核心宗旨&#xff0c;可为什么在引入jar时就会出…

Linux java基础环境搭建 ->JDK

JDK&#xff1a; 1.百度搜索jdk下载&#xff0c;进入oracle官网 比如&#xff1a;https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2. 在linux 进行下载该链接 使用 wget&#xff1a; wget http://download.oracle.com/otn-pub/java/jd…

Linux->mysql基本操作命令及常见问题

常用命令 连接数据库&#xff1a;mysql -uroot -p 输入相应密码允许数据库远程连接 use mysql; update user set host% where user用户名; flush privileges;显示 数据库: show databases; 显示 数据库的表&#xff1a;show tables;创建数据库并指定编码 create database 数据…

零:初识Linux基础知识

通用知识 上大学使用的都是Windows系统&#xff0c;界面友好&#xff0c;上手快&#xff0c;习惯性的点点点操作大部分的课程在windows中操作&#xff0c;比如C用的Vistual Studio&#xff0c;学数据库的SQL Server大学中的操作系统更加偏向理论研究&#xff0c;至于到底是怎么…

Linux 查看磁盘 查看磁盘IO并找出占用 并找出占用IO读写很高的进程

前言 系统&#xff1a;Centos环境&#xff1a;测试环境服务器类型&#xff1a;联想&#xff08;ThinkServer&#xff09;塔式服务器 TS250测试童鞋反馈系统很卡&#xff0c;保存数据非常非常慢&#xff0c;第一反应是重启应用及数据库&#xff0c;不一会说还是非常慢&#xff…

【面试大全-Spring】Spring Bean是如何创建的

在Spring中&#xff0c;万物都是bean对象&#xff0c;每一个对象都可以封装成BeanDefinition&#xff0c;然后去生成bean对象。 所以首先第一步&#xff0c;spring要找到哪些bean需要实例化&#xff0c;第一种是xml的方式&#xff0c;如果需要实例化bean就在xml中配置bean标签&…