中置操作符

scala> 1 to 5
res0: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5)scala> 1 -> 2
res1: (Int, Int) = (1,2)scala> 1 until 5
res2: scala.collection.immutable.Range = Range(1, 2, 3, 4)

一元操作符

scala> ~1
res3: Int = -2scala> -1
res4: Int = -1scala> +1
res5: Int = 1scala> 1.unary_~
res6: Int = -2scala> 1.unary_-
res7: Int = -1scala> 1.unary_+
res8: Int = 1

赋值操作符

结合性:以 : 结尾的操作符,都是右操作符

scala> 4 +: arr
res23: Array[Int] = Array(4, 1, 2, 3)scala> arr.+:(4)
res24: Array[Int] = Array(4, 1, 2, 3)scala> arr :+ 4
res25: Array[Int] = Array(1, 2, 3, 4)scala> arr.:+(4)
res28: Array[Int] = Array(1, 2, 3, 4)

scala> 1::2::3::Nil
res29: List[Int] = List(1, 2, 3)

apply和update

可自定义apply和update方法

f(arg1,arg2,arg3) 等同于    f.apply(arg1,arg2,arg3)  定义在伴生对象中

如果出现在赋值语句左侧:f(arg1,arg2,arg3) = value,则等同于 f.update(arg1,arg2,arg3,value)  定义在类中

unapply

  Option 可空:None空和Some有值

  Fac(a,b) = f

class ApplyDemo(var a:Int,var b:Int) {def update(ab:(Int,Int)): Unit ={this.a = ab._1this.b = ab._2}
}object ApplyDemo {def apply(a: Int, b: Int): ApplyDemo = new ApplyDemo(a, b)def unapply(arg: ApplyDemo): Option[(Int, Int)] ={if(arg.b == 0)None else Some((arg.a,arg.b))}def main(args: Array[String]): Unit = {//apply的使用val v1 = new ApplyDemo(1,2)val v2 = ApplyDemo(3,4)println(v1.a,"\t",v1.b)println(v2.a,"\t",v2.b)//update的使用v2.update((5,6))v2()=(7,8)//unapply的使用val ApplyDemo(a,b) = v2println(a,"\t",b)}
}

转载于:https://www.cnblogs.com/lybpy/p/9738925.html

7、中置、一元、赋值、结合、apply和update、unapply提取器相关推荐

  1. 在shell中变量的赋值有五种方法

    在shell中变量的赋值有五种 :使用 read 命令,直接赋值,使用命令行参数,使用命令行的输出结果,从文件读取 1. 直接赋值,格式为:变量名 = 变量值 2.Read 命令是系统内置命令,语法格 ...

  2. JavaScript中字符串数组赋值失败,不是每个字符串,却是字符。

    我的处女作<Canvas系列教程>在我的Github上正在连载更新,希望能得到您的关注和支持,让我有更多的动力进行创作. 教程介绍.教程目录等能在README里查阅. 传送门:https: ...

  3. 编程控制Word文档中Table的赋值

    当在线打开的Word文档中包含有Table时,如何给Table中的单元格赋值呢?如果是仅仅几个数据,用户可以一个个手动填写,但若是从数据库中读取的大量数据,再想一个个填写那可就真正让人头疼了,在这种情 ...

  4. 共享首选项中commit()和apply()之间的区别是什么

    我在我的Android应用程序中使用共享首选项. 我正在使用共享首选项中的commit()和apply()方法. 当我使用AVD 2.3时它没有显示错误,但是当我在AVD 2.1中运行代码时, app ...

  5. 【Groovy】Groovy 方法调用 ( Groovy 构造函数中为成员赋值 | Groovy 函数的参数传递与键值对参数 | 完整代码示例 )

    文章目录 一.Groovy 构造函数中为成员赋值 二.Groovy 函数的参数传递与键值对参数 三.完整代码示例 一.Groovy 构造函数中为成员赋值 Groovy 类没有定义构造函数 , 但是可以 ...

  6. 如何将某个groupbox中的数据赋值到另一个groupbox_React中的数据和数据流

    第2章大致介绍了React.我们花了些时间学习了React,了解它的设计和API背后的一些概念,我们甚至还逐步说明了如何用React组件构建一个简单注释框.在第4章中,我们将开始更全面地使用组件并开始 ...

  7. 子div在父div中置底

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. C++尽量在operater=中处理“自我赋值”

    operater=中处理"自我赋值 下面的operator=实现是一份不安全的实现,在自赋值时会出现问题: 1.在开头添加"证同测试" c++ 2.通过确保异常安全来获得 ...

  9. 如何覆盖上一次commit_第一次漂冰雪就上难度 “小白”如何在冰雪中漂明白中置后驱...

    这是极驾客的第2431篇文章 第一次参加正经的冰雪试驾,就要面对中置后驱的路特斯Evora GT410.有一些铺装路漂移经验的我对于冰雪驾驶知之甚少,但又充满好奇--冰雪驾驶到底有多好玩? 中置后驱漂 ...

最新文章

  1. mysql中添加外键属性_Python将值插入外键属性(MYSQL)
  2. java lo流_javaIO:字节流
  3. CentOS下安装Telnet
  4. Win10环境下搭建virtualenvwrapper-win
  5. fftw库 vs2019_FFTW库在VS 2010中的使用方法
  6. 【电商福利】双十二优惠福利专场
  7. php怎么添加会员卡,怎么在微信公众号中添加一个会员卡领取功能
  8. 内置类型存储空间(32位机参考)
  9. Disruptor并发框架-1
  10. 光端机需要成对使用吗?
  11. python实验题_python实验二
  12. Elasticsearch单机安装Version7.10.1
  13. vue-element-admin 设置默认语言
  14. 初学web前端开发,你必要了解的基本概念与工具技术
  15. quartus仿真30:D触发器构成的可重复序列111探测器
  16. JavaScript学习笔记——对表单的操作
  17. php 数独求解,高效算法求解数独(示例代码)
  18. 蓝桥杯python试题集VIP版
  19. 手把手带你将手机打造一台私人便捷服务器及私人云盘
  20. 读博士得抑郁症自杀的概率有多大?

热门文章

  1. 【史上最全App开发知识分享】如何从零开始成为app开发专家?
  2. K线类型识别—单K线之阴线
  3. 西乔:我在过着很奢侈的生活
  4. usb相关资料整理(四)
  5. 如何使用CSDN写文章并发布文章?
  6. QuickHit项目
  7. 内网渗透---ms14068
  8. 阿里云学生新用户省钱计划
  9. 移动电源充电宝新国标GB/T 35590-2017检测报告测试项目
  10. 凉哥核心圈程序员必备十大图书推荐(一)