Scala学习——函数
一、函数的定义(def)

object FunctionApp {
//定义函数:方法体内最后一行为返回值,不需要使用return
def add(a:Int,b:Int):Int={
a + b
}
//定义函数:函数体就一行,花括号可以省略
def add1(a:Int,b:Int)=a+b
//定义函数:无参函数在调用时括号可以省略
def add2()=9+9
//定义函数:无返回值的函数
def say(): Unit ={
println("hello")
}
//定义函数:带参数无返回值的函数
def say(name:String): Unit ={
println("hello"+name)
}
//默认参数:在函数定义时允许指定参数的默认值,传入值时会覆盖默认值
def sayName(name:String = "Rdb"):String={
name
}
//命名参数:在调用参数时,可以不按参数的顺序传入,可以根据参数的名称传递
def add3(a:Int,b:Int):Int={
a + b
}
//可变参数:传入的参数个数不确定
def sum(number:Int*)={
var result = 0
for(num <- number){
result += num
}
result
}
}
二、scala中的循环表达式
1)to
1 to 10 :表示1到10,包括1和10,也可以写作:1.to(10)。
默认步长为1,可以手动指定步长
scala> (1 to 10).toList
res4: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) scala> (1.to(10)).toList
res5: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) scala> (1 to 10 by 2).toList
res6: List[Int] = List(1, 3, 5, 7, 9)
2)Range
Range也表示一段范围,但是与to的区别是:to是左闭右闭,而Range是左闭右开,也可以手动指定步长
scala> Range(1,10).toList
res8: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9) scala> Range(1,10,2).toList
res9: List[Int] = List(1, 3, 5, 7, 9)
3)until
until也是是左闭右开区间
scala> (1 until 10).toList
res10: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9) scala> (1.until(10)).toList
res11: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9) scala> (1 until 10 by 2).toList
res12: List[Int] = List(1, 3, 5, 7, 9)
3)for循环
object FunctionApp {
def main(args: Array[String]): Unit = {
//用to,until,Range 做for循环
for(i <- 1.to(10)){
println(i)
}
//定义数组
val students = Array("lucy","jack","mark","lili");
//常规遍历数组
for(student <- students){
println(student)
}
//foreach遍历数组,类似java里的lambda表达式
students.foreach(s => println(s))
}
}
4)while
object FunctionApp {
def main(args: Array[String]): Unit = {
var i = 0;
while(i < 100){
print(i + " ")
i += 1
}
}
}
5)do...while
object FunctionApp {
def main(args: Array[String]): Unit = {
var i = 0;
do{
print(i + " ")
i +=1
}while(i < 100)
}
}
Scala学习——函数的更多相关文章
- Scala学习——函数高级操作
scala函数高级操作 一.字符串高级操作 多行字符串和插值 package top.ruandb.scala.Course06 object StringApp { def main(args: A ...
- Scala学习教程笔记一之基础语法,条件控制,循环控制,函数,数组,集合
前言:Scala的安装教程:http://www.cnblogs.com/biehongli/p/8065679.html 1:Scala之基础语法学习笔记: :声明val变量:可以使用val来声明变 ...
- Scala学习笔记(六):本地函数、头等函数、占位符和部分应用函数
本地函数 可以在方法内定义方法,这种方法叫本地函数,本地函数可以直接访问父函数的参数 def parent(x: Int, y: Int): Unit ={ def child(y:Int) = y ...
- Scala学习笔记(三)—— 方法和函数
1. 方法 方法使用 def 定义: def 方法名(参数名:参数列表,…) :返回值类型 = { 方法结构体 } scala> def add(x : Int ,y : Int):Int = ...
- Scala 学习之路(十)—— 函数 & 闭包 & 柯里化
一.函数 1.1 函数与方法 Scala中函数与方法的区别非常小,如果函数作为某个对象的成员,这样的函数被称为方法,否则就是一个正常的函数. // 定义方法 def multi1(x:Int) = { ...
- Scala学习十二——高阶函数
一.本章要点 在Scala中函数是”头等公民“(可以作为参数,返回值,赋值给其他); 可以创建匿名函数,通常还会交给其他函数; 函数参数可以给出需要稍后执行的行为; 许多集合方法都接受函数参数,将函数 ...
- 【Todo】【读书笔记】大数据Spark企业级实战版 & Scala学习
下了这本<大数据Spark企业级实战版>, 另外还有一本<Spark大数据处理:技术.应用与性能优化(全)> 先看前一篇. 根据书里的前言里面,对于阅读顺序的建议.先看最后的S ...
- Scala学习教程笔记三之函数式编程、集合操作、模式匹配、类型参数、隐式转换、Actor、
1:Scala和Java的对比: 1.1:Scala中的函数是Java中完全没有的概念.因为Java是完全面向对象的编程语言,没有任何面向过程编程语言的特性,因此Java中的一等公民是类和对象,而且只 ...
- 机器学习(三)--- scala学习笔记
Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Spark是UC Berkeley AMP lab所开源的类Had ...
随机推荐
- AI芯片体系结构目标图形处理
AI芯片体系结构目标图形处理 AI chip architecture targets graph processing 可编程图形流处理器(GSP)能够执行"直接图形处理.片上任务图管理和 ...
- CAP 超详细名词解释
目录 引言 概述 分布式 一致性 ACID中的一致性 可用性 分区容错性 可用性与分区容错性,傻傻分不清 问题1:分区容错性说分区故障正常工作,什么叫正常工作?这个正常工作是指满足可用性吗? 问题2: ...
- 【SQLite】教程05-SQLite创建数据库、附加、分离数据库
创建数据库 .quit命令 退出sqlite 提示符 .quit .dump 命令 使用 SQLite .dump 点命令来导出完整的数据库在一个文本文件中,如下所示: sqlite3 Test.db ...
- 04-拉格朗日对偶问题和KKT条件
04-拉格朗日对偶问题和KKT条件 目录 一.拉格朗日对偶函数 二.拉格朗日对偶问题 三.强弱对偶的几何解释 四.鞍点解释 4.1 鞍点的基础定义 4.2 极大极小不等式和鞍点性质 五.最优性条件与 ...
- 「题解」黑暗塔 wizard
本文将同步发布于: 洛谷博客: csdn: 博客园: 简书. 题目 题意简述 给定 \(y\),求 \(\varphi(x)=y\) 中 \(x\) 的个数和最大值. \(1\leq y\leq 10 ...
- Java 到底是值传递还是引用传递?
关于这个问题,引发过很多广泛的讨论,看来很多程序员对于这个问题的理解都不尽相同,甚至很多人理解的是错误的.还有的人可能知道Java中的参数传递是值传递,但是说不出来为什么. 在开始深入讲解之前,有必要 ...
- ES6、ES7的一些新特性
1.常见的就是let 和 const 命令 let 只在命令所在的代码块内有效 const声明一个只读的常量 2.变量的赋值 let [a, b, c] = [1, 2, 3]; 这样输出的话a=1, ...
- excel VBA中Xldown和xlup用法
1.Worksheets("Sheet1").Range("A1").End(xlDown).Select '意思为自A1起,返回从上往下的最后一个非空 ...
- Salesforce LWC学习(三十五) 使用 REST API实现不写Apex的批量创建/更新数据
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.224.0.api_rest.meta/api_rest/resources_compo ...
- 易车网实战+【保姆级】:Feapder爬虫框架入门教程
今天辰哥带大家来看看一个爬虫框架:Feapder,看完本文之后,别再说你不会Feapder了.本文辰哥将带你了解什么是Feapder?.如何去创建一个Feapder入门项目(实战:采集易车网轿车数据) ...