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 其中的标识符是一个带有两个 ...
随机推荐
- MariaDB Centos7 下安装MariaDB
Centos7 下安装MariaDB by:授客 QQ:1033553122 1.下载安装文件 rpm包为例,对于标准服务器安装,至少需要下载client,shared,serve文件(安装时如果少了 ...
- OpenCV 线条及形状
1.线条 # dst 相当于画板 dst=np.zeros((300,300,3),np.uint8) # #参1 图像 参2 起始点 参3 结束点 参4 颜色 line=cv2.line(dst,( ...
- matlab练习程序(单层感知器)
clear all; close all; clc; %生成两组已标记数据 randn(); mu1=[ ]; S1=[ ; ; 0.4]; P1=mvnrnd(mu1,S1,); mu2=[ ]; ...
- javascript获取网页各种高宽及位置总结
screen对象 获取屏幕的高宽(分辨率) screen.width //屏幕的宽 screen.height //屏幕的高 screen.availWidth //屏幕可用宽度 屏幕的像素高度减去系 ...
- mysql的几个知识点
常用命令 原则:能用可视化工具的尽量使用工具,命令行仅限于问题排查. mysql -u ACCOUNT -pPWD -h IP -P port [-D database] //连接数据库 show d ...
- 一致性Hash(Consistent Hashing)原理剖析
引入 在业务开发中,我们常把数据持久化到数据库中.如果需要读取这些数据,除了直接从数据库中读取外,为了减轻数据库的访问压力以及提高访问速度,我们更多地引入缓存来对数据进行存取.读取数据的过程一般为: ...
- 在 Azure 中将基础结构自动化工具与虚拟机配合使用
若要以一致的方式大规模创建和管理 Azure 虚拟机 (VM),通常需要某种形式的自动化. 可以通过许多工具和解决方案来自动完成整个 Azure 基础结构部署和管理生命周期. 本文介绍了一些可以在 A ...
- 红帽7中firewall常用指令
1.端口管理 (1)列出DMZ区域开放的端口 ~]#firewall-cmd --zone=dmz --list-ports (2)8080端口加入dmz区 ~]#firewall-cmd --zon ...
- Python初学者第三天 运算符、while循环
3day Python基础语法 1.运算符:算数运算符.比较运算符.赋值运算符.逻辑运算符 A.算数运算符:a=10,b=3 + 加 a+b - 减 a-b * 乘 a*b / 除 a/b ...
- Python学习--Selenium模块简单介绍(1)
简介及运行流程 Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozi ...