- 《快学 Scala》 学习笔记 - Chapter 1
- Scala学习笔记 A2/L1篇 - 特质Traits
- 《快学 Scala》 学习笔记 - Chapter 3
- 《快学 Scala》 学习笔记 - Chapter 2
- Scala学习笔记 A2/L1篇 - 集合 Collection
- Scala学习笔记 A2/L1篇 - 高阶函数 Higher-O
- Scala学习笔记 A2/L1篇 - 模式匹配和样例类 Patt
- Scala学习笔记 A2/L1篇 - XML处理 XML Pro
- Scala学习笔记 A3/L2篇 - 高级类型 Advanced
- Scala学习笔记 A3/L2篇 - 类型参数 Type Par
Scala解释器
-
工作原理实际上是将输入快速编译成字节码,然后提交给JVM运行并输出结果,因此称为REPL
-
REPL
-
Read
-
Evaluation
-
Print
-
Loop
-
-
-
:paste
- 进入粘贴模式
-
在解释器中运算返回的值为常量
-
例如 scala> 3*5
res3: Int = 15 -
此处 res3 不可再负值,是一个常量
-
声明值和变量
-
常量
- val
-
变量
- var
-
值的声明的类型是放到名称后面的,和go语言类似, 另外声明后如果有负值,声明时为说明类型,则编译器也会自动推断
-
var xmax, ymax = 100
-
var greeting, message: String = null
-
常用类型
-
类型
-
Byte
-
Char
-
Short
-
Int
-
Long
-
Float
-
Double
-
-
类型上可以执行方法
-
例子
-
1.toString()
-
1.to(10)
-
-
备注
- 有点像C#的扩展函数
-
算术和操作符重载
-
Scala几乎可以对任何符号为方法命名
-
运算符在scala也是方法
- a + b 可以认为是a.+(b)
-
方法可以隐式调用
- 1.to(10) 可以写成 1 to 10
-
存在 counter+=1 但不存在 counter++
调用函数的方法
-
import
-
import scala.math._
- _是java中的*
-
import math._ 等同于 import scala.math._, 前面的scala可以省略
-
-
单例对象(singleton object)
-
伴生对象(companion object)
-
类似java中的静态方法
-
BigInt.probablePrime(100, scal.util.Random)
-
-
使用习惯
-
不带参数的Scala方法通常不使用圆括号(执行后不改变当前对象)
- “Hello”.distinct
-
apply方法
-
可以认为是用类似函数的方法对()进行重载
-
伴生对象上可以用
-
实例对象上也可以用
-
-
例子
-
例1
-
java访问数组
- s.charAt(4)
-
scala访问数组
-
def apply(n: Int): Char
-
“Hello”(4)
-
-
-
例2
-
BigInt(“1234567890”) 等同于 BigInt.apply(“1234567890”)
- 本语句会产生出新的BigInt实例
-
-
Scaladoc
-
Mac下建议使用DASH进行浏览
-
Scala也是支持闭包的,函数可以作为参数传入
-
s.count(p: (Char) => Boolean): Int
-
s.count(_.isUpper)
-
这是一种非常紧凑的定义,见12章
-
-
练习
-
第三题. res变量是val还是var
- 是val
-
第四题. 查找 StringOps 关键字
- “crazy”*3 记过是将crazy 重复3遍
-
第十题.takeXXXX和substring的区别是take不存在越界问题,只是尽量按照输入的数量来获取值,而substring 则如果越界则会抛异常
![](https://img.haomeiwen.com/i1077703/088d7d893c47dc95.png)
网友评论