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 ...
随机推荐
- WPF如何实现一款类似360安全卫士界面的程序?(共享源码!)
以前学习Windows Form编程的时候,总感觉自己做的界面很丑,看到360安全卫士.迅雷等软件的UI设计都非常美观,心里总是憧憬着要是自己能实现这样的UI效果该多好!!!另一个困扰我的问题是,这个 ...
- 小数5.2500四舍五入保留1位小数的java算法之一
BigDecimal bd = new BigDecimal(5.2500); BigDecimal a = bd.setScale(1, BigDecimal.ROUND_HALF_UP); dou ...
- HTML <fieldset> 标签将表单内的相关元素分组
<fieldset> 标签将表单内容的一部分打包,生成一组相关表单的字段. 当一组表单元素放到 <fieldset> 标签内时,浏览器会以特殊方式来显示它们,它们可能有特殊的边 ...
- iOS加密之MD5加密
话不多说,上代码! MyMD5.h里面 #import <Foundation/Foundation.h> @interface MyMD5 : NSObject { } +(NSStri ...
- 【读书笔记】iOS网络-底层网络
在iOS上,有一个库叫做Core Foundation networking或CFNetwork,它是对原始Socket的轻量级封装,不过它很快对于大多数常见场景来说变得非常笨重了.最后,添加了另一层 ...
- NTP服务器引起的上行带宽超大
2014年2月11日,centos服务器突然上行带宽8M,耗光所有带宽,不能远程SSH登录维护. 到机房直接使用界面登录,安装iptraf,运行后选择 Statistical breakdowns - ...
- mysql一些小技巧
1 强制命中索引:force index 某些时候查询,索引会失效,可以进行强制命中索引 2 group_concat 能将相同的行组合起来. 当然,我推荐这种操作可以在代码中操作,如果必须在特定情况 ...
- Redis客户端开发包:Jedis学习-高级应用
事务 Jedis中事务的写法是将redis操作写在事物代码块中,如下所示,multi与exec之间为具体的事务. jedis.watch (key1, key2, ...); Transaction ...
- [Java]Hessian客户端和服务端代码例子
简要说明:这是一个比较简单的hessian客户端和服务端,主要实现从客户端发送指定的数据量到服务端,然后服务端在将接收到的数据原封不动返回到客户端.设计该hessian客户端和服务端的初衷是为了做一个 ...
- Nginx中文手册
Nginx 常见应用技术指南[Nginx Tips] 第二版 作者:NetSeek http://www.linuxtone.org (IT运维专家网|集群架构|性能调优) 目 录 一. Nginx ...