码迷,mamicode.com
首页 > 其他好文 > 详细

scala 第一课

时间:2016-02-28 12:26:37      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

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}

scala 第一课

标签:

原文地址:http://www.cnblogs.com/huaxiaoyao/p/5224304.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!