一、标识符

二、中置操作符

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

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. DOM的查找,新增,删除操作

    查找 1. document.getElementById()  通过ID获取元素,由于ID唯一,所以获取的是一个元素 2. document.getElementsByTagName() 通过标签名 ...

  2. 【读书笔记】iOS-网络-Web Service协议与风格

    协议指的是在与其它系统交换结构化信息时所要遵循的一套格式,过程与规则.此外,协议定义了在传输过程中所要使用的数据格式.这样,接收系统就能正确地解释结构化信息并做出正应的回应. 1,简单对象访问协议. ...

  3. 前端hash路由基本原理,及代码的基本实现

    路由就是指随着浏览器地址栏的变化,展示给用户的页面也不相同. 早期的路由都是后端实现的,直接根据 url 来 reload 页面,页面变得越来越复杂服务器端压力变大,随着 ajax 的出现,页面实现非 ...

  4. leetCode题解之Longest Palindrome

    1.题目描述 2.问题分析 直接用hash table 做就行. 3.代码 int longestPalindrome(string s) { ) ; map<char,int> m; f ...

  5. LeetCode题解之Swap Nodes in Pairs

    1.题目描述 2.问题分析 对两个节点进行交换操作 3.代码 ListNode* swapPairs(ListNode* head) { if( !head || head->next == N ...

  6. LeetCode题解之Find All Duplicates in an Array

    1.题目描述 2.问题分析 将数组中的元素 A[i] 放到 A[ A[i] - 1] 的位置.然后遍历一边数组,如果不满足 A[i] == i+1,则将A[i]添加到 结果中. 3.代码 vector ...

  7. 数据库还原错误:指定的转换无效。(SqlManagerUI)

    SSMS在一定程度上方便我们进行一些常见的操作.但有时候它处理得又不是那么不人性化.尤其是错误信息. 今天我在进行数据库还原的时候就碰到一个错误:指定的转换无效.(SqlManagerUI) Spec ...

  8. MariaDB实现主从配置及读写分离(一)

    一.主从复制方案 1.  在两台CentOS7虚拟机上分别部署MariaDB, 主数据库服务器IP为192.168.17.235, 从服务器IP为192.168.17.238. 从服务器通过调取主服务 ...

  9. Netstat Commands for Linux Network Management

    netstat (network statistics) is a command line tool for monitoring network connections both incoming ...

  10. Online, Cheap -- and Elite

    Online, Cheap -- and Elite Analysis of Georgia Tech’s MOOC-inspired online master's in computer scie ...