REPL使用
- scala 进入repl
- 在repl内
:help 查看repl帮助 :quit 退出repl :paste 粘贴多行代码
scala var和val
var和val都是修饰变量的引用
- var 变量引用可以改变,即可以指向新的对象
- val 变量的引用不可改变,即不可以指向新的对象;但对象自身可以改变
Range
Range可以生成数字序列,可以包含尾部(to);可以不包含尾部(until);可以指定步长(by)
- to: 1 to 10
- until: 1 until 10
- range: 1 to 10 by 2
类型推断
在实际编程中,你在以下情况中必须提供显式的类型注解。
- 声明了可变的var 变量或不可变的val 变量,没有进行初始化。(例如,在类中的抽象声明,如val book: String)。
- 所有的方法参数(如def deposit(amount: Money) = {…})。
- 方法的返回值类型,在以下情况中必须显式声明其类型。
- 在方法中明显地使用了return(即使在方法末尾也是如此)。
- 递归方法。
- 两个或多个方法重载(拥有相同的函数名),其中一个方法调用了另一个重载方法,调用者需要显式类型注解。
- Scala推断出的类型比你期望的类型更为宽泛,如Any。
把集合转成可变参数对象
使用“liObj:-*”
示例
package com.test
object Method2{
def joiner(str:String*):String = {
str.mkString("-")
}
def joiner(li:List[String]):String={
joiner(li:_*)
}
def main(args: Array[String]): Unit = {
val newStr = joiner("hello","world","beautiful","greate")
println(newStr)
val li = List("1","2","3","4")
println(joiner(li))
}
}
sealed关键字
sealed 修饰类时,表示该类的子类必须与当前类在同一个文件中
scala中类型及成员导入
- 正常导入
import java.io.File
- “_”作为通配符
import java.io.File._
- “{}”导入一个包下的多个类
import java.util.{Map, HashMap}
- “{XXX => yyy}”导入后重命名
import java.util.{HashMap => JavaHashMap}