文章目录
- @[toc]
- 1.流程控制
- **小结:**
- **2. Scala中流程控制没有三元运算符**
- **2.1 Scala中如果逻辑代码只有一行可以省略花括号**
- **小结:**
- **3. 循环控制**
- **3.1 for控制**
- **3.2循环守卫 --> 循环表达式添加逻辑判断**
- **3.3 循环步长 --> 表示循环幅度by**
- **3.4循环嵌套**
- **3.5引入变量**
文章目录
- @[toc]
- 1.流程控制
- **小结:**
- **2. Scala中流程控制没有三元运算符**
- **2.1 Scala中如果逻辑代码只有一行可以省略花括号**
- **小结:**
- **3. 循环控制**
- **3.1 for控制**
- **3.2循环守卫 --> 循环表达式添加逻辑判断**
- **3.3 循环步长 --> 表示循环幅度by**
- **3.4循环嵌套**
- **3.5引入变量**
1.流程控制
注意几个点:
1.Scala执行过程中都是有返回值的Unit也是一种返回值
2.Unit表示的无返回值,例如Println底层使用的就是Unit返回值
3.条件控制语句也是有返回值的
4.Unit的返回值打印就是()
val age = 30
val result = if (age == 30) {
println(s"年龄是${age}")
}
println(result) //()
}//谁会没事怎么写
上述方式没有指定result类型,
所以,以满足条件的最后一行代码的执行结果 作为返回值
如果将println变为 100
那么result就是100
关于result的数据类型;Scala是强数据类型,在编译阶段就需要确定其数据类型;此时数据类型有两种取值,Unit和String;至于取哪一种看家谱图。看其通用类型 Any
**
**
如果指定返回值类型为Unit,那么返回值就是(),不管里面内容是什么
关于强数据类型的流程控制的返回值类型,取多个分支的通用数据类型;
**
**
小结:
–条件控制返回值 为条件成立的最后一行的代码值
–其返回值的类型,取多个分支的通用数据类型;
–数据类型的获取是在编译阶段,非运行阶段,因此取多个分支的通用数据类型;
因为是通用数据类型,即便返回值真的是1,也无法对数据进行加一操作;
**
**
2. Scala中流程控制没有三元运算符
//xxx ? a:b
2.1 Scala中如果逻辑代码只有一行可以省略花括号
var c = if (age == 30 ) println(s"${age}为30") else println("age不是30")
println(c) //未指定返回值,最后一行为println 所以是Unit类型,值为()
小结:
–scala中没有三元运算符
–scala没有加加减减
3. 循环控制
3.1 for控制
scala只有 forEach循环,没有Java的fori循环
**
**
scala中没有双冒号,但是将Java中后者的那个冒号进行修改, <- 表示意思就是将集合中每一个元素指向Object对象;
var array = 1 to 5 //从1 到5
for (elem <- array) { //直接 array.for回车即可;
println(elem)
}
创建集合的方式
var array = 1 to 5 //包含5
var array1 = 1 until 5 //不包含5 until等价Range(1,5)
3.2循环守卫 --> 循环表达式添加逻辑判断
方式:增加if即可在循环后面
for (elem <- carray if elem>5) {
println(elem)
}
/**
* 6
* 7
* 8
* 9
*/
3.3 循环步长 --> 表示循环幅度by
3. 循环幅度
var array2 = 1 to 100 by 10
for (elem <- array2) {
println(elem)
}
/**
* 11
* 21
* 31
* 41
* 51
* 61
* 71
* 81
* 91
*/
等价Range(1,100,2) 和python同
3.4循环嵌套
**
**
3.5引入变量
// TODO 引入变量
for(i <- 1 to 3){
var j =i+1
println(j)
}