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 ...
随机推荐
- HTML中表单提交数据GET、POST的区别
表单提交数据Get和Post的区别: GET和POST是表单提交数据其中的两种方式,除此之外还有PUT.DELETE等. GET: GET的请求起因于正常的URL请求,或是没有指定METHOD的HTM ...
- JavaScript实战(带收放动画效果的导航菜单)
虽然有很多插件可用,但为了共同提高,我做了一系列JavaScript实战系列的实例,分享给大家,前辈们若有好的建议,请务必指出,免得误人子弟啊! ( 原创文章,转摘请注明:苏福:http://www. ...
- jQuery静态方法type使用和源码分析
jQuery.type方法是检测数据类型的工具方法,在分析其用法之前先总结下js给我们提供了那些监测数据类型的方法: 一.typeof 操作符 下面是测试代码 var data=[],a='123', ...
- php强制转换类型和CMS远程管理插件的危险
远程管理插件是十分受WordPress站点管理员欢迎的工具,它们允许用户同时对多个站点执行相同的操作,如,更新到最新的发行版或安装插件.然而,为了实现这些操作,客户端插件需要赋予远程用户很大的权限.因 ...
- Problem with WinRM on Exchange 2013 Management Shell and Exchange Toolbox on a new exchange 2013 with CAFE and BE on single server installation
While deploying MS Exchange 2013 I experienced issues with accessing the Exchange Management Shell a ...
- laravel的一些坑
1.laravel 本身的性能不行,对高性能服务器,需要使用lumen 2. {{$url}} 默认会执行 htmlentities ,进行转意义,如果不需要转义可直接使用 php的echo 或者 { ...
- Java中的内部类(成员内部类、静态内部类、局部内部类、匿名内部类)
Java中的内部类(成员内部类.静态内部类.局部内部类.匿名内部类) 神话丿小王子的博客主页 我们先看这样一段话:人是由大脑.肢体.器官等身体结果组成.而组成我们人体的心脏它也有自己的属性和行为(血液 ...
- iOS中block的使用、实现底层、循环引用、存储位置
一.整体介绍 定义:C语言的匿名函数,
- 【VLC-Android】LibVLC API简介(相当于VLC的MediaPlayer)
前言 学新东西API很重要,这里抛砖引玉整理了一下,欢迎反馈! 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over14 ...
- 安卓学习-- RecyclerView简单入门
一.加入JAR包 第一感觉这个东东,好复杂,没ListView来的快,方便 在项目中加入android-support-v7-recyclerview.jar包 这个包在extras\android\ ...