一、函数的定义(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学习——函数的更多相关文章

  1. Scala学习——函数高级操作

    scala函数高级操作 一.字符串高级操作 多行字符串和插值 package top.ruandb.scala.Course06 object StringApp { def main(args: A ...

  2. Scala学习教程笔记一之基础语法,条件控制,循环控制,函数,数组,集合

    前言:Scala的安装教程:http://www.cnblogs.com/biehongli/p/8065679.html 1:Scala之基础语法学习笔记: :声明val变量:可以使用val来声明变 ...

  3. Scala学习笔记(六):本地函数、头等函数、占位符和部分应用函数

    本地函数 可以在方法内定义方法,这种方法叫本地函数,本地函数可以直接访问父函数的参数 def parent(x: Int, y: Int): Unit ={ def child(y:Int) = y ...

  4. Scala学习笔记(三)—— 方法和函数

    1. 方法 方法使用 def 定义: def 方法名(参数名:参数列表,…) :返回值类型 = { 方法结构体 } scala> def add(x : Int ,y : Int):Int = ...

  5. Scala 学习之路(十)—— 函数 & 闭包 & 柯里化

    一.函数 1.1 函数与方法 Scala中函数与方法的区别非常小,如果函数作为某个对象的成员,这样的函数被称为方法,否则就是一个正常的函数. // 定义方法 def multi1(x:Int) = { ...

  6. Scala学习十二——高阶函数

    一.本章要点 在Scala中函数是”头等公民“(可以作为参数,返回值,赋值给其他); 可以创建匿名函数,通常还会交给其他函数; 函数参数可以给出需要稍后执行的行为; 许多集合方法都接受函数参数,将函数 ...

  7. 【Todo】【读书笔记】大数据Spark企业级实战版 & Scala学习

    下了这本<大数据Spark企业级实战版>, 另外还有一本<Spark大数据处理:技术.应用与性能优化(全)> 先看前一篇. 根据书里的前言里面,对于阅读顺序的建议.先看最后的S ...

  8. Scala学习教程笔记三之函数式编程、集合操作、模式匹配、类型参数、隐式转换、Actor、

    1:Scala和Java的对比: 1.1:Scala中的函数是Java中完全没有的概念.因为Java是完全面向对象的编程语言,没有任何面向过程编程语言的特性,因此Java中的一等公民是类和对象,而且只 ...

  9. 机器学习(三)--- scala学习笔记

    Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Spark是UC Berkeley AMP lab所开源的类Had ...

随机推荐

  1. 3D惯导Lidar SLAM

    3D惯导Lidar SLAM LIPS: LiDAR-Inertial 3D Plane SLAM 摘要 本文提出了最*点*面表示的形式化方法,并分析了其在三维室内同步定位与映射中的应用.提出了一个利 ...

  2. 人工智能AI智能加速卡技术

    人工智能AI智能加速卡技术 一. 可编程AI加速卡 1. 概述: 这款可编程AI加速器卡具备 FPGA 加速的强大性能和多功能性,可部署AI加速器IP(WNN/GNN,直接加速卷积神经网络,直接运行常 ...

  3. MySQL:count()用法

    语法 COUNT() 函数返回匹配指定条件的行数. COUNT(column_name) 语法 COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入): SELECT CO ...

  4. mybatis学习——映射器(mappers)

    在定义 SQL 映射语句之前,我们需要告诉 MyBatis 到哪里去找到这些语句. 在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射 ...

  5. 【NX二次开发】Block UI 分割线

    设置控件可见 this->separator0->GetProperties()->SetLogical("Show",true);

  6. 测试MySQL锁的问题

    测试MySQL锁的问题 目录 测试MySQL锁的问题 1 Record Lock 2 Next-Key Lock 2 死锁测试 InnoDB支持三种行锁: Record Lock:单个行记录上面的锁 ...

  7. VScode如何设置模板字符串html标签自动补全

    在学习Vue的过程中,很多时候都需要用到模板字符串,但是里面的html标签一个字符一个字符的去敲未免也太麻烦了吧,其实我们可以通过设置来实现在模板字符串中按Tab键快速补全html标签. 1.在VSC ...

  8. 跟着官方文档学Maven构建生命周期

    在IntelliJ IDEA中,显示了Maven的Lifecycle: 只需要学习这些命令,就能构建一个Maven项目. 三个内置生命周期 Maven内置了三个生命周期:clean.default和s ...

  9. 『无为则无心』Python基础 — 15、Python流程控制语句(for循环语句)

    目录 1.for循环语法 2.for循环中的break和continue 3.循环+else结构 (1)while...else (2)while...else退出循环的方式 (3)for...els ...

  10. 阿里云中quick bi用地图分析数据时维度需转换为地理区域类型

    1.到数据集里面点击编辑要做地图分析的数据集 2.找到要分析的地理维度字段,选择转换为对应的类型,这里为市级,所以选择转换为市,其它类似,然后点击右上角保存即可. 3.返回数据集,点击新建仪表板 4. ...