一、标识符

二、中置操作符

中置表达式,操作符位于两个参数之间

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--操作符的更多相关文章

  1. learning scala 操作符

    scala 操作符: 算术运算符:  +  - *  / % 关系统运算符: > , < ,= ,!= ,>=,<=, 逻辑运算符: && . || , ! 位 ...

  2. Scala 操作符与提取器

    实际上Scala没有操作符, 只是以操作符的格式使用方法. 操作符的优先级取决于第一个字符(除了赋值操作符), 而结合性取决于最后一个字符 Scala的操作符命名更加灵活:) 操作符 中置操作符(In ...

  3. scala --操作符和运算

    基本类型和操作 scala 的基本类型包括如下几种 数类型 ​ 整数类型 :Byte Short Int Long ​ 小数类型: Float Double 字符类型:Char 用'' 单引号包裹,是 ...

  4. scala操作符&运行

    ---恢复内容开始--- #操作符运算 数学操作符 + - * / % 比较操作符 < > >= =< 逻辑操作符 && || 对等操作符 ==   != 位操 ...

  5. Scala 入门详解

    Scala 入门详解 基本语法 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的 Scala 程序是对象的集合,通过调用彼此的方法来实现消息传递.类,对象,方法,实例变 ...

  6. Scala基础(1)

    Scala基础语法 声明与定义: val,常量声明                       val  x:T(把x声明成一个类型为T的常量)  x是变量的名字,T是变量的类型          v ...

  7. Scala 常用语法

    Clojure首先是FP, 但是由于基于JVM, 所以不得已需要做出一些妥协, 包含一些OO的编程方式 Scala首先是OO, Java语法过于冗余, 一种比较平庸的语言, Scala首先做的是简化, ...

  8. => in Scala

    What does => mean in Scala? 操作符=>在Scala中什么意思? 百度了下,有个论坛给出了比较全面的回答,请参见http://stackoverflow.com/ ...

  9. 大数据技术之_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 ...

  10. scala学习笔记——操作符

    中置操作符(二元操作符),操作符位于两个参数之间.操作符包括字母,比如to,也可以包括操作符字符,比如1->10,等同于方法调用1.->(10) a 标识符 b 其中的标识符是一个带有两个 ...

随机推荐

  1. MariaDB Centos7 下安装MariaDB

    Centos7 下安装MariaDB by:授客 QQ:1033553122 1.下载安装文件 rpm包为例,对于标准服务器安装,至少需要下载client,shared,serve文件(安装时如果少了 ...

  2. OpenCV 线条及形状

    1.线条 # dst 相当于画板 dst=np.zeros((300,300,3),np.uint8) # #参1 图像 参2 起始点 参3 结束点 参4 颜色 line=cv2.line(dst,( ...

  3. matlab练习程序(单层感知器)

    clear all; close all; clc; %生成两组已标记数据 randn(); mu1=[ ]; S1=[ ; ; 0.4]; P1=mvnrnd(mu1,S1,); mu2=[ ]; ...

  4. javascript获取网页各种高宽及位置总结

    screen对象 获取屏幕的高宽(分辨率) screen.width //屏幕的宽 screen.height //屏幕的高 screen.availWidth //屏幕可用宽度 屏幕的像素高度减去系 ...

  5. mysql的几个知识点

    常用命令 原则:能用可视化工具的尽量使用工具,命令行仅限于问题排查. mysql -u ACCOUNT -pPWD -h IP -P port [-D database] //连接数据库 show d ...

  6. 一致性Hash(Consistent Hashing)原理剖析

    引入 在业务开发中,我们常把数据持久化到数据库中.如果需要读取这些数据,除了直接从数据库中读取外,为了减轻数据库的访问压力以及提高访问速度,我们更多地引入缓存来对数据进行存取.读取数据的过程一般为: ...

  7. 在 Azure 中将基础结构自动化工具与虚拟机配合使用

    若要以一致的方式大规模创建和管理 Azure 虚拟机 (VM),通常需要某种形式的自动化. 可以通过许多工具和解决方案来自动完成整个 Azure 基础结构部署和管理生命周期. 本文介绍了一些可以在 A ...

  8. 红帽7中firewall常用指令

    1.端口管理 (1)列出DMZ区域开放的端口 ~]#firewall-cmd --zone=dmz --list-ports (2)8080端口加入dmz区 ~]#firewall-cmd --zon ...

  9. Python初学者第三天 运算符、while循环

    3day Python基础语法 1.运算符:算数运算符.比较运算符.赋值运算符.逻辑运算符 A.算数运算符:a=10,b=3 + 加   a+b - 减  a-b * 乘  a*b / 除  a/b ...

  10. Python学习--Selenium模块简单介绍(1)

    简介及运行流程 Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozi ...