Scala--操作符
一、标识符
二、中置操作符
中置表达式,操作符位于两个参数之间
1 to 10
1.to(10)
1 -> 10
1.->(10)
三、一元操作符
a.标识符()
1 toString
1.toString()
+、-、!、~ 可以作为前置操作符,转换成名为 unary_操作符 的方法调用
-a 和 a.unary_- 一样
四、赋值操作符
a+=b a = a + b
五、优先级
+ ->优先级相同
中置操作符高于后置操作符
a 中置操作符 b 后置操作符 等同于
(a 中置操作符 b) 后置操作符
六、结合性
所有操作符都是左结合的,除了:
- :操作符
- 赋值操作符
构造列表的操作符::是右结合的
1::2::Nil 1::(2::Nil)
2::Nil Nil.::(2) 右结合的二元操作符是其第二个参数的方法
七、apply和update方法
用于数组和映射
f.update(arg1, arg2, ..., value) f(arg1,arg2,...) = value 更新值
f.apply(arg1,arg2,...) f(arg1,arg2,...) 获取值
val scores = new scala.collection.mutable.HashMap[String,Int]
scores("Bob") = 100 // scores.update("Bob",100)
val bobsScore = scores("Bob") // val bobsScore = scores.apply("Bob")
println(bobsScore)
被用在伴生对象中,用来构造对象而不用显示地使用new
class Fraction(n:Int, d:Int){ } object Fraction{
def apply(n:Int, d:Int) = new Fraction(n, d)
}
这样直接可以使用Fraction(3,4)来构造出一个分数,而不用 new Fraction(3,4)
八、提取器
所谓提取器就是一个带有unapply方法的对象,把unapply当做伴生对象中apply方法的反向操作。
unapply方法接收一个对象,然后从中提取值,通常这些值是当初用来构造对象的参数值
unapply返回的是一个Option,包含一个元组。
object Fraction{
def apply(n:Int, d:Int) = new Fraction(n, d)
def unapply(input: Fraction) ={
if(input.den == 0) None else Some((input.num, input.den))
}
}
此例中返回Option[(Int, Int)]
九、带单个参数或无参数的提取器
十、unapplySeq方法
参考《快学Scala》
Scala--操作符的更多相关文章
- learning scala 操作符
scala 操作符: 算术运算符: + - * / % 关系统运算符: > , < ,= ,!= ,>=,<=, 逻辑运算符: && . || , ! 位 ...
- Scala 操作符与提取器
实际上Scala没有操作符, 只是以操作符的格式使用方法. 操作符的优先级取决于第一个字符(除了赋值操作符), 而结合性取决于最后一个字符 Scala的操作符命名更加灵活:) 操作符 中置操作符(In ...
- scala --操作符和运算
基本类型和操作 scala 的基本类型包括如下几种 数类型 整数类型 :Byte Short Int Long 小数类型: Float Double 字符类型:Char 用'' 单引号包裹,是 ...
- scala操作符&运行
---恢复内容开始--- #操作符运算 数学操作符 + - * / % 比较操作符 < > >= =< 逻辑操作符 && || 对等操作符 == != 位操 ...
- Scala 入门详解
Scala 入门详解 基本语法 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的 Scala 程序是对象的集合,通过调用彼此的方法来实现消息传递.类,对象,方法,实例变 ...
- Scala基础(1)
Scala基础语法 声明与定义: val,常量声明 val x:T(把x声明成一个类型为T的常量) x是变量的名字,T是变量的类型 v ...
- Scala 常用语法
Clojure首先是FP, 但是由于基于JVM, 所以不得已需要做出一些妥协, 包含一些OO的编程方式 Scala首先是OO, Java语法过于冗余, 一种比较平庸的语言, Scala首先做的是简化, ...
- => in Scala
What does => mean in Scala? 操作符=>在Scala中什么意思? 百度了下,有个论坛给出了比较全面的回答,请参见http://stackoverflow.com/ ...
- 大数据技术之_27_电商平台数据分析项目_02_预备知识 + Scala + Spark Core + Spark SQL + Spark Streaming + Java 对象池
第0章 预备知识0.1 Scala0.1.1 Scala 操作符0.1.2 拉链操作0.2 Spark Core0.2.1 Spark RDD 持久化0.2.2 Spark 共享变量0.3 Spark ...
- scala学习笔记——操作符
中置操作符(二元操作符),操作符位于两个参数之间.操作符包括字母,比如to,也可以包括操作符字符,比如1->10,等同于方法调用1.->(10) a 标识符 b 其中的标识符是一个带有两个 ...
随机推荐
- equals与hashcode区别
哈希码: hashCode的作用是用来获取哈希码,也可以称作散列码.实际返回值为一个int型数据.用于确定对象在哈希表中的位置. Object中有hashcode方法,也就意味着所有的类都有has ...
- 学习笔记(2)——实验室集群LVS配置
查看管理结点mgt的网卡信息,为mgt设置VIP [root@mgt ~]# ifconfig eth0 Link encap:Ethernet HWaddr 5C:F3:FC:E9:: inet a ...
- qt多线程信号槽传输方式
//简单介绍一下QT信号与槽的连接方式: //Qt::AutoConnection表示系统自动选择相应的连接方式,如果信号与槽在同一线程,就采用Qt::DirectConnection, //如 ...
- 分布式事务实现-Percolator
Google为了解决网页索引的增量处理,以及维护数据表和索引表的一致性问题,基于BigTable实现了一个支持分布式事务的存储系统.这里重点讨论这个系统的分布式事务实现,不讨论percolator中为 ...
- 使用 Azure Active Directory 管理 Azure 中的 HPC Pack 群集
Microsoft HPC Pack 2016 支持在 Azure 中部署 HPC Pack 群集的管理员将其与 Azure Active Directory (Azure AD) 集成. 请按照本文 ...
- 一张思维导图纵观MySQL数据安全体系!
杨奇龙 2017-06-29 09:52:10 786 作者介绍 杨奇龙,前阿里数据库团队资深DBA,主要负责淘宝业务线,经历多次双十一,有海量业务访问DB架构设计经验.目前就职于有赞科技,负责数据库 ...
- ndk的注意事项
从开源网站下载的源码,需要自己编译c源码成so类库.当时用Android studio 运行总是报错"finished with non-zero exit value 2"报错定 ...
- Django2.0路由层-URLconf
目录 DJango2.0路由层-URLconf 概述 urlpatterns 实例 path转换器 自定义path转换器 使用正则表达式 命名组(有名分组) URLconf匹配请求URL中的哪些部分 ...
- 记录一次mysql使用load into命令导入csv格式数据的过程
今天从qwiklab实验获取一组数据,大概有5万条,在qwiklab实验室使用的是pgsql数据库,但是今天想把他插入本地的mysql数据库中. 1.首先是查看一下数据内容: 数据中有的是空值,有的是 ...
- Django商城项目笔记No.16用户部分-用户中心收货地址
首先完成省市区三级联动 新建areas应用 python ../../manage.py startapp areas 模型类代码 class Area(models.Model): "&q ...