[原创]Scala学习:函数的定义
方式一:标准的定义函数
def 函数名(参数1: 参数类型,参数2: 参数类型): 返回值类型 = {
函数体
}
例子
def max(x: Int,y: Int): Int ={
if(x > y) x
else y
}
注意:参数列表中必须标注好参数类型,因为scala编译器无法推断参数的类型
方式二:在一般的情况下可以省略,函数返回值的类型
def 函数名(参数1: 参数类型,参数2: 参数类型) = {
函数体
}
def max(x: Int,y: Int) = {
if(x > y) x
else y
}
或者 将大括号也可以省略
def max(x: Int,y: Int) = if(x > y) x else y
注意:scala中,在函数递归的时候,必须指明返回值的类型;其他框架或者系统,可以不用指明函数的返回值
方式三:既不带参数也不带返回值有用结果的定义函数
scala> def greet() = println("hello world")
greet: ()Unit
Unit是函数greet的记过类型,指的是函数没有有效的返回值,scala中的Unit类型比较于java中的viod类型,而实际上java中返回void的方法都会被映射为返回Unit的scala方法
结果类型为Unit的方法,并非是为了得到返回值,而是为了其他的运行效果(side effect)
匿名函数:函数常见的 形式,关注于函数的计算。分析:因为函数是有值的,所以我们将函数赋值给一个常量
val add = (x: Int) => x+100 // 声明匿名函数
println(add(2)) //调用匿名函数
可变参数的函数定义:* 表示
def con(args: Int*) = {
var result = 0
for(arg <- args) result += arg
result
}
println("result" + con(1,2,3,4))
注意:
1)函数是有值的,所以函数可以作为另外一个函数的参数
[原创]Scala学习:函数的定义的更多相关文章
- Scala学习——函数
一.函数的定义(def) object FunctionApp { //定义函数:方法体内最后一行为返回值,不需要使用return def add(a:Int,b:Int):Int={ a + b } ...
- [原创]Scala学习:数组的基本操作,数组进阶操作,多维数组
1.Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合.数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合 2 声明数组变量: 要使用的程序的数组 ...
- [原创]Scala学习:for,function,lazy
1.for循环是一个循环控制结构,可以有效地编写需要执行的特定次数的循环.Scalar的循环说明如下的各种形式: 1)Scala中for循环最简单的语法是: for( var x <- Rang ...
- [原创]Scala学习:Tuple,Array,Map ,文件操作
1.Tuple:元祖.是一个有用的容器对象. 1)特点: ① 元祖是不可变的,即,当声明完了一个元祖,那么它的长度就不可以在改变: ② 元祖可以包含不同类型的数据,对象: ③ 索引是从 '_1 ...
- [原创]Scala学习:关于变量(val,var,类型推断)
1.常量定义: val val 类似于java中的final变量.一旦初始化了,val就不能再被赋值 val megs = "hello world" 2.变量的定义: var ...
- Scala学习——函数高级操作
scala函数高级操作 一.字符串高级操作 多行字符串和插值 package top.ruandb.scala.Course06 object StringApp { def main(args: A ...
- scala 学习笔记九 定义操作符
Scala中方法名可以包含几乎所有字符,还可以对操作符+赋予新的含义 上面例子中136行,用下划线来表示“缺省初始化值” 上面151行和153行都是通过圆点表示法进行调用 157行和159行用中缀表示 ...
- [原创]Scala学习:流程控制,异常处理
1.流程控制 1)do..while def doWhile(){ var line="" do{ line = readLine() println("readline ...
- [原创]Scala学习:编写Scala脚本
scala支持脚本 1)在/opt/scala-script下创建一个文件hello.scala 编辑内容如下: $ hello ,this is the first scala script 2)运 ...
随机推荐
- Ubuntu下安装配置和卸载Tomcat
转载自:http://zyjustin9.iteye.com/blog/2177291 注:此处不采用apt-get安装,因为这种方式安装后,tomcat安装目录会到处都是,像天女散花一样.此处采取下 ...
- ASP.NET CORE RAZOR :初始化数据库
官方说法是:设定数据库种子https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/razor-pages/sql 应用背景:初次部署系统时,设定一 ...
- 【leetcode】118. Pascal's Triangle
@requires_authorization @author johnsondu @create_time 2015.7.23 19:54 @url [Pascal's Triangle](http ...
- python抓取51CTO博客的推荐博客的全部博文,对标题分词存入mongodb中
原文地址: python抓取51CTO博客的推荐博客的全部博文,对标题分词存入mongodb中
- asp.net repeater Container.ItemIndex
<asp:Repeater ID="myRepeater" runat="server"> <HeaderTemplate> <t ...
- Data Guard配置
>> from zhuhaiqing.info 确认主库处于归档模式下 SQL>archive log list; Database log mode Archive Mode Au ...
- DDD架构Sample
http://dddsamplenet.codeplex.com/SourceControl/latest#DDDSample-Vanilla/Application/IBookingService. ...
- Swing与javafx直接调用
Swing调用javafx 调用方法: Platform.runLater(new Runnable(){ @Override public void run() { WebView webView ...
- 调整jvm内存
1.使用解压tomcat 在catalina.bat的第一行增加: set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNew ...
- Frogger - poj 2253 (Dijkstra)
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28802 Accepted: 9353 Description Fr ...