Scala学习(一)
2016-07-19 00:17
471 查看
1、HelloWorld
object HelloWorld{ def main(args:Array[String]):Unit={ println("hello,world") } }
编译并执行
scalac HelloWorld.scala scala HelloWorld.scala
2、scala语法
scala末尾的分号是可选的,区分大小写,类名的第一个字母要大写,方法名第一个字母要小写交互式编程
1 + 1 println("hello,world")
3、函数
def 方法名(参数名:类型):返回类型 = { }
4、循环
4.1 输出[1 - n]
for(i <- 1 to n)
4.2 输出[1,n)
for(i <- 1 util n)
4.3 遍历数组
var a = Array("hello","world","fonxian") for(i <- a){ println(i) }
5、数组
5.1 新建数组
var a = new Array[Int](10) var b = Array("hello","world","fonxian")
5.2 访问数组元素
a(1)
5.3 可变长度数组(等价于Java中ArrayList)
新建var a = new ArrayBuffer[Int]()
添加元素
a += 1 a += (1,2,3,4) a ++= ArrayBuffer(7,8,9)
数组操作
a.size a.remove(2) //去掉索引值为2的元素 a.remove(2,3) //去掉以索引值为2的元素开始的3个元素 a.trimEnd(n) // 去掉尾部的n个元素 a.trimStart(n) //去掉头部的n个元素 a.insert(2,3) //索引值为2的位置插入一个元素
数组的一些循环操作
var result = for(elem <- a) yield 2*elem
等价于
for(elem <- a){ elem = elem *2 }
var result = for(elem <- a if elem % 2 == 0) yield 8 * elem
等价于
for(elem <- a){ if(elem % 2 == 0){ elem = elem * 8 } }
6、映射
6.1 不可变映射,键对应的值不可以被改变
val scores = Map("feng" -> 100,"yun" -> 18) val fengScore = scores("feng")
6.2 可变映射,键对应的值可以被改变
val myScores = scala.collection.mutable.Map("feng"->100,"yun"->18) myScores("feng") = 1000
6.3 创建空的映射
val myScores1 = scala.collection.mutable.HashMap[String,Int]
6.4 添加元素
//添加元素 myScores1 += ((k,v)) myScores1 += (("aaa",1),("bbb",2))
6.5 获取映射元素的一种方法
//获取映射元素的一种方法 val omg = if(myScores1.contains("aaa")) myScores1("aaa") else 0
6.6 获取映射元素的另一种方法
//获取映射元素的另一种方法 val omg = myScores1.getOrElse("aaa",0)
6.7 删除一个映射元素
//删除一个映射元素 myScores1 -= "aaa"
6.8 遍历映射元素的key
//遍历映射元素的key myScores1.keySet
6.9 遍历映射元素的value
//遍历映射元素的value for(v <- myScores1.values){ println(v) }
6.10 map+reduce
在经过map操作时,得到的是一个集合Vector(2,3,4,5),执行reduece操作时,得到5val my = Vector(1,2,3,4) my.map(n => n+1).reduce((a,b) => if(a>b) a else b)
相关文章推荐
- 机器学习与深度学习资料收纳
- android CoordinatorLayout使用
- linux 命令(1)mkdir
- 数据存储 ----归档解档
- 1025. PAT Ranking (25) PAT 甲级
- linux--03
- HDU 1263 水果
- 自增锁预分配ID
- ubuntu和windows双系统,启动时优先进入windows系统
- LeetCode - 374. Guess Number Higher or Lower
- MyBatis使用DEMO及cache的使用心得
- java---验证码图片的生成
- Idea的使用
- 0142 nginx搭建rtmp协议流媒体服务器总结
- android 开发之画布初步探索
- flask博客中关于文章和图片位置的定义
- 从零开始学_JavaScript_系列(26)——只需要前端知识的ajax教程
- 线程的生命周期,线程结束
- Unity3d 销毁
- MyBatis基础用法(一)