scala 第一课
2016-02-28 11:20
351 查看
val msg="Hello,World"
Scala 可以根据赋值的内容推算出变量的类型。这在Scala语言中成为“type inference”。
Scala访问数组的语法是使用()而非[]。
Scala不支持++i和i++运算符,因此需要使用i += 1 来加一
当你在某个值后面使用()时,Scala将其翻译成对应对象的apply方法
REPL
scala 交互式编译的工具 可以方便进行练习 查看测试
类的定义
case class Money(val amount:Int=1, val currency:String="USD"){
def +(other: Money) : Money = Money(amount + other.amount)
}
类实例的生成与使用
val m1 =Money(100,"rmb")
val m2=Money(200,"rmb")
m1+m2
scala里面有没有,类似python里面的自醒函数 type之类的,可以查看类的方法属性之类?
集合的操作
val nums=List(1,2,3,4,5,6)
nums.foreach(println)
for(n<-nums)println(n)
val reverseNums=nums.reverse
取子集
nums drop 2 take 3
List 可以接受不同的类型元素
val things =List(1,2,"scala",true)
过滤和分区
val amounts = List(Money(10,"USD"),Money(2,"EUR"),Money(20,"GBP"),Money(75,"EUR"),Money(100,"USD"),Money(50,"USD"))
val usd = amounts.filter(x=>x.currency=="USD")
val notusd = amounts.filterNot(x=>x.currency=="USD")
Partition方法 合并了filter and filterNot 的结果
val allamounts=amounts.partition(m=>m.currency=="USD")
返回的结果类型为Tuples(List(Money),List(Money))
scala支持Tuple类型
allamounts._1
allamounts._2
val t=(true,1,false,2)
Map 类似hashmap这样的key,value数据结构
val wallet =Map("USD"->10,"EUR"->2)
wallet("EUR")
如果key不存在,则会报元素不存在的异常,所以安全获取元素的方法是
wallet.get("EUR")
map方法
对集合中的每一个元素都执行,生成新的集合,作用在List上。
对List中的元素进行分类的方法
val sortedAmounts = amounts.groupBy(_.currency)
foldLeft方法
会传递一些状态从一个元素到另一个元素,例如连乘或加。
val productofnums = nums.foldLeft(1){(total,n) =>total*n}
Ranges
表示一个有起始值和结束时的区域
1 to 10
1 util 10
1 to 10 by 3
'a' to 'z'
option some None
如果有值,就是some,没有值就是None
Map.get返回的值就是option[T]
Seq 是List和Vector的父类型,支持迭代。
相关文章推荐
- 【USACO 5.4.2】Character Recognition
- 18. 4Sum
- 在WORD 2007中给公式编号
- java操作xml文件
- iOS中Apple Pay接入详细教程
- 2015年总结
- 研究首屏时间?
- HTML、CSS、JavaScript学习总结
- line-height学习与总结
- 固话座机验证
- Linux Mint (应用软件— 虚拟机:Virtualbox)
- windows平台HTTP代理server搭建(CCproxy)
- 梯度下降算法java实现
- 程序员初学机器学习的四种方式
- 罗隐《筹笔驿怀古》
- android 异常处理--java.io.IOException: 您的主机中的软件中止了一个已建立的连接
- Memcached ----关于存取的小例子
- html textarea 自动在底部滚动的实现方法------终于搞定你
- hdu2021——发工资咯:)
- Java xml object 互转