结构:
学会使用scala中主要流程控制语句
数组:
学会数组的声明和使用
映射:
了解scala中的映射基础知识
包的引用:
了解scala中包的基础知识
scala控制结构:
判断if
循环while/do
枚举for表达式
匹配match表达式
异常处理throw/try
输出print/println
输入readLine
控制结构参考代码如下:
object dada {
def main(args: Array[String]): Unit = {
/*var result = min(2,3);
print(result)*/
//testFor()
//testForIf()
//test2For()
//testForYield()
testMatch()
}
// if
def min(x:Int,y:Int):Int={
var a=x
if(x>y) a=y
return a
}
/**
* 格式: for(i <- 数据集合) 其中 <- 可以理解为一个向左指向的符号
* 1 to 4 (1 =<i<=4)
* 1 until 4 (1 =<i<=4-1)
* 下面结果为 1 2 3 4
*/
def testFor()={
for(i<-1 to 4){
println("No: " + i)
}
}
def testForIf()={
for(i<-1 to 4){
if(i%2==0 && i!=2)
println("No: " + i)
}
}
def test2For()={
for(i<-1 to 4){
for(j<-1 to 4){
println("No: " + i +j)
}
}
}
/**
* yield 格式:
* for(i <- e) yield E(i)
* 或者
* for(i <- e) yield {E(i)}
*/
def testForYield()={
var No = for(i<- "hello") yield i
print(No)
}
/**
* match 功能等同于Java的switch,执行自上而下方式 格式:
* => 表达指向含义
* case _ 等同于default
* a match{
* case e1 => ...
* case e2 => ...
* ...
* case _ => ...
* }
*/
def testMatch()={
val result =
"eggs" match {
case "salt" => "pepper"
case "chips" => "salsa"
case "eggs" => "bacon"
case _ => "what??"
}
print(result)
}
}
scala数组:
object Array {
/**
* 变长数组ArrayBuffer
* val c = new ArrayBuffer[T]()
* c += e1 // c: ArrayBuffer(e1)
* c +=(e2,e3) // c: ArrayBuffer(e1,e2,e3) 在数组尾部增加元素 e2 e3
* c +=(e2,e3) // c: ArrayBuffer(e1,e2,e3) 在数组尾部增加元素 e2 e3
* c ++=Array(e4,e5) // c: ArrayBuffer(e1,e2,e3,e4,e5) 在数组尾部增加数组内容为e4,e5
* c.trimEnd(1) // c: ArrayBuffer(e1,e2,e3,e4) 在数组尾部移除最后一个元素
* c.insert(2,e3)// c: ArrayBuffer(e1,e2,e3,e3,e4) 在第二个元素位置后插入e3
* c.insert(2,e1,e2,e3)// c: ArrayBuffer(e1,e2,e1,e2,e3,e3,e3,e4) 在第二个元素位置后插入e1,e2,e3
* c.remove(3) // c: ArrayBuffer(e1,e2,e1,e3,e3,e3,e4) 移除第三个元素后的一个元素
* c.remove(3,2) // c: ArrayBuffer(e1,e2,e1,e3,e4) 移除第三个元素后的2个元素
* D = c.toArray // 把变长数组转换成定长数组
* E = A.toBuffer // 定长数组转换为变长数组
*
* 数组遍历:
* for(i <- 0 to (c.length-1)) println(c(i)) // 通过角标方式获取数组内数据
*
*
*/
def main(args: Array[String]): Unit = {
val A = new Array[Int](10)
A(7) = 57
val B = A.toBuffer
B.remove(2,2)
println("A" + A)
println("B" + B) // (0, 1, 4, 5, 6, 57, 0, 0)
for(i <- 1 to (B.length,2)) print(B(i))
}
}
scala映射:
object Map {
/**
* 这个可以类比于Java的map
* 不可变映射:
* val Z = Map(a1->b1, a2->b2)
* or
* val Z = Map((a1,b1), (a2,b2))
* 可变映射
*/
def main(args: Array[String]): Unit = {
val Y = scala.collection.mutable.Map((1,"one"), (2,2))
val c = Y.contains(1)// 判断是否包含某个key
print(c)
val a = Y.get(1) // 获取key为1的value
println(a)
val d = Y.getOrElse(1, "nothing")// 映射中如果有key为1的则返回对应value 否则返回 nothing
println(d)
Y(2) = "two" // 更新key为2的value数值
println( Y.get(2))
Y(3) = "three" // 新增key为3的value 键值对
println( Y.get(3))
Y += ((4,"foru"), (5,"five"))
println( Y.get(4))
Y -= 5 // 删除Key为5的键值对
println(Y.getOrElse(5, "nothing"))
// 对于不可变映射,通过新建新的映射来增删其键值
}
}
scala元组:
object yuanzu {
/**
* 若干个单个的值,包含在圆括号便构成了元组
*
*/
def main(args: Array[String]): Unit = {
val g = (1,1.2,'A')
val h = g._1 // 用格式 _1 表示访问元组第一个元素
print(h)
}
}