Scala学习笔记
来源:互联网 发布:重庆高档小区知乎 编辑:程序博客网 时间:2024/05/18 17:42
第2章 控制结构和函数a1 13
2.1 条件表达式14
scala 的if else是有返回值的
1、val a = if(x > 0) x else -1 返回类型是个Int
2、val b = if(x > 0) x else "minus" 返回类型是Any(因为数据类型的公共父类都是Any)
3、 val c = if (a > 1) a 返回类型是AnyVal,虽然这里没有else,但是scala会引入Unit所以该表达式同等于
val c = if (a > 1) a else () () = 无用值
2.2 语句终止 16
一般一行想要写多个语句的时候会用到分号
默认情况下scala是不用写分号
2.3 块表达式和赋值 16
块 => {}
在scala中{}包含一系列表达式,其结果就是块中最后一个表达式的返回值
2.4 输入和输出17
println("")
println("%s,%d","a",b)
println(s"${},${}")
2.5 循环 18
其他循环类似,只有for有点区别
让变量i遍历<-右边的表达式的所有值
for(i <- 表达式){
}
scala没有提供break continue这些跳出等操作
其实for中还有很多高级用法,文中只件了这么点
2.6 高级for循环和for推导式19
多重循环
for(i <- 1 to 3; j<- 1 to 3) print((10 * i * j) + " ")
scala> for(i <- 1 to 3; j<- 1 to 3) println(i,j)
(1,1)
(1,2)
(1,3)
(2,1)
(2,2)
(2,3)
(3,1)
(3,2)
(3,3)
推导式
val a = (i <i 1 to 10) yield i % 3
2.7 函数 21
scala支持方法和函数
方法对对象操作,函数不是
但是文中没有详细说明,方法与函数的区别
2.8 默认参数和带名参数 l1 22
调用方法时,可以使用方法的默认值,也可以在调用时显式声明赋值
def cxsum(i:Int,j:Int = 2) = i + j
cxsum(1)
or
cxsum(1,2)
or
cxsum(1,j=3)
2.9 变长参数 l122
一个方法可以接收多个同类型的参数
def aaa(i:Int*) = i.map(_*2)
println(aaa(2,4))
入参scala会给予 Seq(Int)的类型,返回值是个ArrayBuffer
2.10 过程 23
如果函数体包含在花括号当中,且没有=号,返回类型就是Unit,这样的函数叫过程
过程没有返回值,我们调用它仅仅是为了它的副作用
def speak(s:String){ println(s) } 隐式
def speak(s:String):Unit { println(s) } 显式
2.11 懒值l1 24
延迟计算
2.12 异常 25
讲得太浅,可以先参考java的
练习
1.if else版,模式匹配版
def zf(n: Int) = {
if (n > 0) {
1
} else if (n == 0) {
0
} else {
-1
}
}
def zf2(n:Int) = n match {
case `n` if `n` > 0 => 1
case 0 => 0
case _ => -1
}
找出整型,如果大于0就返回1,等于0就返回0,小于0就返回-1
BigInt(1).signum
2.val a = {}
a = Unit
4.List(0 to 10: _*).reverse.foreach(println)
for(i <- 0 to 10 reverse) println(i)
5.写个过程,打印n到0
def countdown(n: Int){
List(0 to n: _*).reverse.foreach(println)
}
6.循环版
var t:Long = 1
for(i <- "Hello") t = t * i.toLong
println(t)
7.不用循环版
"Hello".map(_.toLong).product
8.
def pro(s: String): Long = {
s.map(_.toLong).product
}
9.
defproduct1(s:String):Long={
if(s.length ==1)
s.charAt(0).toLong
else
s.take(1).charAt(0).toLong * product1(s.drop(1))
}
defproduct2(s:Array[Char]):Long={
if(s.length ==1)
s(0).toLong
else
s(0).toLong * product2(s.drop(1))
}
- Scala学习笔记1
- Scala学习笔记2
- scala语言学习笔记
- Scala学习笔记
- scala学习笔记01
- Scala学习笔记02
- Scala学习笔记03
- Scala学习笔记04
- scala学习笔记:集合
- scala学习笔记01
- Scala学习笔记02
- Scala学习笔记03
- Scala学习笔记04
- Scala学习笔记
- Scala开发学习笔记
- Scala学习笔记一
- Scala学习笔记二
- Scala学习笔记三
- 谜语
- ES6的一些事
- Cadence技巧04:OrCAD原理图的off-page加页面号
- Android Activity使用
- leetcode No153. Find Minimum in Rotated Sorted Array
- Scala学习笔记
- 解决putty network error software caused connection abort 自动中断
- 两年波折路(考研、工作、考研)
- CV codes代码分类整理合集(http://www.sigvc.org/bbs/thread-72-1-1.html)
- BZOJ 3669 [Noi2014]魔法森林 LCT
- 第2章 随机变量及概率分布
- [BZOJ4870][Shoi2017]组合数问题 矩阵快速幂
- mysql之 mysqldump 备份恢复详解
- js实现一个图片 懒加载插件