scala 第一课

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scala 第一课相关的知识,希望对你有一定的参考价值。

技术分享

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 第一课的主要内容,如果未能解决你的问题,请参考以下文章

吴恩达-医学图像人工智能专项课程-第一课第一周6-10节总结+作业解读

我的“便(bian)宜”Python网课第一课

收藏第一课第二周作业-学会计算分类各种指标-超详细教程

第一课第三周大作业-- MRI 脑肿瘤自动分割教程

吴恩达-医学图像人工智能专项课程-第一课第一周11节总结

吴恩达第一课第三周随笔