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}
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的父类型,支持迭代。
scala 第一课的更多相关文章
- 快学Scala 第一课 (变量,类型,操作符)
Scala 用val定义常量,用var定义变量. 常量重新赋值就会报错. 变量没有问题. 注意:我们不需要给出值或者变量的类型,scala初始化表达式会自己推断出来.当然我们也可以指定类型. 多个值和 ...
- Spark 3000门徒第一课随笔
昨晚听了王家林老师的Spark 3000门徒系列课程的第一课,把scala基础过了一遍,对ArrayBuffer有了新的认识: Array本身创建后不可修改ArrayBuffer可修改import s ...
- vue.js学习(第一课)
学习资料 来自台湾小凡! vue.js是javascript的一个库,只专注于UI层面,核心价值永远是 API的简洁. 第一课: 不支持IE8. 1.声明式渲染: el元素的简称 element : ...
- Magento学习第一课——目录结构介绍
Magento学习第一课--目录结构介绍 一.Magento为何强大 Magento是在Zend框架基础上建立起来的,这点保证了代码的安全性及稳定性.选择Zend的原因有很多,但是最基本的是因为zen ...
- <-0基础学python.第一课->
初衷:我电脑里面的歌曲很久没换了,我想听一下新的歌曲,把他们下载下来听,比如某个榜单的,但是一首一首的点击下载另存为真的很恶心 所以我想有没有办法通过程序的方式来实现,结果还真的有,而且网上已经有有人 ...
- 留念 C语言第一课简单的计算器制作
留念 C语言第一课简单的计算器制作 学C语言这么久了. /* 留念 C语言第一课简单的计算器制作 */ #include<stdio.h> #include<stdlib.h ...
- MFC学习-第一课 MFC运行机制
最近由于兴趣爱好,学习了孙鑫的MFC教程的第一课.看完视频了,自己便用visual studio 2010尝试了MFC编程,其中遇到了一些问题. 1.vs2010不像vs6.0那样可以新建一个空的MF ...
- OpenCV 第一课(安装与配置)
OpenCV 第一课(安装与配置) win10,opencv-2.4.13, 安装, vs2013, 配置 下载安装软件 官网OpenCV下载地址下载最新版本,我下载的是opencv.2.4.13,然 ...
- 【第一课】神奇的Context
初学Android的困惑 初学Android跳转页面的时候,往往教程里是这么写的: Intent intent = new Intent(); //MyActivity就是当前的Activity,It ...
随机推荐
- PDF.NET框架学习篇之SQL-MAP使用存储过程
最近一直在学习“深蓝医生”的PDF.NET框架,对Sql-Map使用存储过程有了点小小的体会.基础知识请到http://www.cnblogs.com/bluedoctor/archive/2010/ ...
- C#如何定制Excel界面并实现与数据库交互
Excel是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理.统计分析和辅助决策操作,广泛地应用于管理.统计财经.金融等众多领域.(另外,Excel还是伦敦一所会展中心的名称)..NET ...
- Bootstrap源码分析之transition、affix
一.Transition(过滤) 作为一个基础支持的组件,被其他组件多次引用.实现根据浏览器支持transition的能力,然后绑定动画的结束事件:首先:创建一个Element:然后:迭代查看此元素支 ...
- CamanJS – 提供各种图片处理的 JavaScript 库
CamanJS 是一个基于 Canvas 处理图片的 Javascript 库,结合简单易用的接口和先进高效的图像编辑技术.CamanJS 很容易扩展新的过滤器和插件,并伴随着一系列广泛的图像编辑功能 ...
- 站长必备:10个好用的 WordPress 备份插件
网站备份对于站长来说极其重要的.任何的事情都可能发生,这可能会导致你失去所有的辛勤工作:您的网站可能被黑客攻破,你可以安装一个了插件导致冲突,你的服务器可能被攻击,你可能在编辑文件时犯了一个错误等等, ...
- [原][CSS3]会动的盒子机器人
[PC与移动端皆可]会动的盒子机器人 浏览器必须可以解析perspective属性. 在线:http://wangxinsheng.herokuapp.com/boxMan 代码: <!DOCT ...
- iOS 获取emoji表情和拦截emoji表情
1 2 //将数字转为 #define EMOJI_CODE_TO_SYMBOL(x) ((((0x808080F0 | (x & 0x3F000) >> 4) | (x &a ...
- 使用Android Annotations开发
使用Android Annotations框架gradle配置1.修改Module下的build.gradle apply plugin: 'com.android.application' appl ...
- Selenium Test 自动化测试 入门级学习笔记
1.下载安装Firefox-selenium插件 需要下载插件可以联系,这里暂不提供下载地址. 2.集成Eclipse 需要下载jar包可以联系,这里暂不提供下载地址. 集成Eclipse非常简单,加 ...
- 初次使用 git 的“核弹级选项”:filter-branch 从仓库中删除文件
当初看 Pro Git 时就被作者这个“核弹级选项”的称呼吓到了,因此一直没敢好奇地去尝试.核弹啊,用对了威力无穷,用错了破坏力无穷! 但是,今天,我不得不用了,因为我想把我的原来写一些代码放到 gi ...