文档章节

Scala prefix and infix and postfix operators

秋风醉了
 秋风醉了
发布于 2015/12/18 00:31
字数 625
阅读 143
收藏 0

Scala prefix and infix and postfix operators


prefix and infix and postfix operators

Scala中操作符分为

前置操作符(+、-、!、~,这些操作符也是函数)

中置操作符(所有只有一个参数的函数都可以作为中置操作符,比如 "abc" indexOf "a",相当于调用"abc".indexOf("a"))

后置操作符(不带任何参数的函数,比如 123 toString)

前置操作符

scala> ~2
res15: Int = -3

scala> !true
res16: Boolean = false

scala> -1
res17: Int = -1

中置操作符

scala>  1 to 10
res9: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

scala> 1 -> 10
res10: (Int, Int) = (1,10)

后置操作符

scala> 2.unary_-
res18: Int = -2

scala> 1 toString
<console>:11: warning: postfix operator toString should be enabled
by making the implicit value scala.language.postfixOps visible.
This can be achieved by adding the import clause 'import scala.language.postfixOps'
or by setting the compiler option -language:postfixOps.
See the Scala docs for value scala.language.postfixOps for a discussion
why the feature should be explicitly enabled.
       1 toString
         ^
res19: String = 1

看下面这个例子

➜  ~  scala -feature
Welcome to Scala 2.12.0-M2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_51).
Type in expressions for evaluation. Or try :help.

scala> 123 toString
<console>:11: warning: postfix operator toString should be enabled
by making the implicit value scala.language.postfixOps visible.
This can be achieved by adding the import clause 'import scala.language.postfixOps'
or by setting the compiler option -language:postfixOps.
See the Scala docs for value scala.language.postfixOps for a discussion
why the feature should be explicitly enabled.
       123 toString
           ^
res0: String = 123

scala>

scala -feature打开一个console。在这里 toString 是一个后置操作符。这里给出了warning,解决这个问题有两种方式

import scala.language.postfixOps

setting the compiler option -language:postfixOps

还有类似下面这种写法

scala> (1 to 10) toList
<console>:11: warning: postfix operator toList should be enabled
by making the implicit value scala.language.postfixOps visible.
This can be achieved by adding the import clause 'import scala.language.postfixOps'
or by setting the compiler option -language:postfixOps.
See the Scala docs for value scala.language.postfixOps for a discussion
why the feature should be explicitly enabled.
       (1 to 10) toList
                 ^
res1: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)


unary operator

数类型还提供了一元前缀+和-操作符(方法unary_+和unary_-),允许你指示文本数是正的还是负的,如-3或+4.0。如果你没有指定一元的+或-,文本数被解释为正的。一元符号+也存在只是为了与一元符号-相协调,不过没有任何效果。一元符号-还可以用来使变量变成负值。

一元操作符只有一个参数。如果出现在参数之后,就是后置(postfix)操作符;出现在参数之前,就是前置(prefix)了。

如下所示,

scala> 2.unary_-
res4: Int = -2

scala> 2.unary_+
res5: Int = 2

scala> -2
res6: Int = -2

scala> +2
res7: Int = 2

scala> 2.unary_~
res8: Int = -3

==========END==========

© 著作权归作者所有

下一篇: grpc初探
秋风醉了
粉丝 252
博文 532
码字总数 405694
作品 0
朝阳
程序员
私信 提问
Swift Cheat Sheet

swift的一些速查表,转载过来的,但是粘贴代码的时候换行都出问题了,这个该怎么解决? 不喜欢格式的可以看原文:http://codeinswift.com/swift-cheat-sheet/ Basics println("Hello, world"...

yoyoso
2014/12/27
200
0
编程语言--Scala

Scala是一门现代的多范式编程语言,志在以简练、优雅及类型安全的方式来表达常用编程模式。它平滑地集成了面向对象和函数语言的特性。 Scala是面向对象的:Scala是一个纯面向对象语言,在某种...

匿名
2008/11/11
73.9K
12
Swift 2.2 Warnings and It’s Solutions – Xcode 7.3

Swift 2.2 Warnings and It’s Solutions – Xcode 7.3 Xcode 7.3 came with Swift 2.2 Version. I just updated to Xcode 7.3 and found following warnings because of Swift version cha......

法斗斗
2016/07/01
15
0
Elide 4.4.4 发布,雅虎开源的应用数据 API 搭建平台

Elide 4.4.4 发布了,Elide 是一个互联网和移动端应用数据 API 搭建平台,只需要一个简单的 JPA 注释模型就能轻松搭建 GraphQL 和 JSON API web 服务,由雅虎开源。 更新内容如下: 修复 ID...

段段段落
05/19
824
0
编程语言 Scala 2.12.0-M1 发布

Scala 2.12.0-M1 发布,Scala 2.12 系列的目标是 Java 8。 下载:scala-lang.org Maven Central Scala 2.12 改进计划: Java 8 style closures. Lambda syntax for SAM types New backend a......

oschina
2015/05/10
2.7K
16

没有更多内容

加载失败,请刷新页面

加载更多

UAVStack功能上新:新增JVM监控分析工具

UAVStack推出的JVM监控分析工具提供基于页面的展现方式,以图形化的方式展示采集到的监控数据;同时提供JVM基本参数获取、内存dump、线程分析、内存分配采样和热点方法分析等功能。 引言 作为...

宜信技术学院
22分钟前
5
0
MySQL的5种时间类型的比较

日期时间类型 占用空间 日期格式 最小值 最大值 零值表示 DATETIME 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 9999-12-31 23:59:59 0000-00-00 00:00:00 TIMESTAMP 4 bytes YYYY-MM......

物种起源-达尔文
29分钟前
6
0
云服务OpenAPI的7大挑战,架构师如何应对?

阿里妹导读:API 是模块或者子系统之间交互的接口定义。好的系统架构离不开好的 API 设计,而一个设计不够完善的 API 则注定会导致系统的后续发展和维护非常困难。比较好的API设计样板可以参...

阿里云官方博客
32分钟前
5
0
Rancher + VMware PKS实现全球数百站点的边缘K8S集群管理

Sovereign Systems是一家成立于2007年的技术咨询公司,帮助客户将传统数据中心技术和应用程序转换为更高效的、基于云的技术平台,以更好地应对业务挑战。曾连续3年提名CRN,并且在2012年到2...

RancherLabs
37分钟前
5
0
6、根据坐标,判断该坐标是否在地图区域范围内

最近在写配送区域相关的代码,具体需求如下: 根据腾讯地图划分配送区域,总站下边设多个配送分站,然后将订单中的收货地址将其分配给不同的配送分站。 1、地图区域划分(腾讯地图) 1.1、H...

有一个小阿飞
39分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部