Scala学习笔记
基础概念

交互式环境
输入scala,进入命令行环境,可以进行交互式的操作。
所有结果均自动赋于一个变量名,在当前session下自由使用

声明常量与变量
常量:val a = 23*32+4
变量:var b = 0
申明时不需要给出类型,如果要指定类型,格式如下:
val greeting: String = “Hello”
常用类型
Byte、Char、Short、Int、Long、Float、Double
Boolean
scala不区分基本类型和引用类型,他们都是类。
1.toString()
1.to(10) //Range(1,2,3,4,5,6,7,8,9,10)
RichInt、RichDouble、RichChar…
BigInt、BigDecimal
重载
a + b
a.+(b)
方法调用
如果方法没有参数,不需要使用括号
“difjdk”.sorted
“fdasfa”.insersect(“bbbb”)
import scala.math._ //_是通配符,类似java中的*
类通常有一个伴生对象(companion object),它的方法类似java的静态方法
apply方法
val s = “Hello”
s(4)
s.apply(4)
当作()操作符的重载形式
()会与隐式参数冲突:
“afads”.sorted(3) (sorted可以有一个隐式参数,但3是非法的参数)
=> (“adfa”.sorted)(3)
或”adfa”.sorted.apply(3)
控制结构和函数
条件
if (x>0) 1 else -1
这个表达式是有值的,它的值根据x不同是1或-1,如下将值赋于变量s
val s = if (x>0) 1 else -1
表达式也可以返回不同的类型,如:
if (x>0) “positive” else -1
上述表达式的类型是两个分支类型的公共超类型,为Any
如果else缺失,if (x>0) 1 等同于
if (x>0) 1 else ()
()表示无有用值的占位符,是一个Unit类,相当于Java中的void
块表达式
scala中,{ }块包含一系列表达式,其结果也是一个表达式,块中最后一个表达式的值,就是块的值
val distance = {val dx = x - x0;val dy = y-y0;sqrt(dxdx+dydy)}
输入输出
打印一个值,用print与println函数
有变量输出,使用字符串插值
print(f”hello,$name,${age+0.5}%7.2f”)
被格式化的字符串以字母f打头。
使用scala.io.StdIn的readLine方法从控制台读取一行输入