scala – 像=一样的字符串隐式转换列表
请考虑以下代码段. =不是
java.lang.String的成员,所以我猜有某种隐式转换正在进行中.如何查找作用于String的此类预定义隐式转换的列表?
scala> var x = "asdf" x: java.lang.String = asdf scala> x += x scala> x res2: java.lang.String = asdfasdf 解决方法
你选了一个特别糟糕的例子.在某种意义上,=是String的一部分.有关java.lang.String的Javadoc,请参阅此注释:
您将不得不查找Java language specification以查找有关它的更多信息(15.18.1).但是,再一次,Scala不是Java,所以也是Scala language specification(12.3.1)的一部分. 到目前为止,我已经谈过,而不是=.但是,Scala有一个特殊的语法糖用于分配.如第6.12.4节所述,除了< =,> =,!=和以=开头的运算符之外,如果以等号结尾的任何运算符符号(请参阅第1章中的“运算符字符”)将被重新解释,如果它不作为一种方法存在.特别, x += 1 将被重新解释为 x = x + 1 无论x是否为var,都会发生这种情况,因此有时可能会看到错误消息“重新分配给val”. 因此,正如您所看到的,=实际上是String的一部分,通过Scala规范中复制的Java规范中的异常,加上一些语法糖. 这并不意味着没有java.lang.String中没有的方法可以通过隐式转换与它一起使用.不过,我会把它留给其他答案.如果我是你,我会改变问题中的方法,使其正确.此外,= Stack Overflow中无法搜索. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- vim – 除了Windows上的C/C++之外,还有其他语言的CScope样式
- 如何在给定Scala中的位置列表的情况下拆分字符串
- 介绍几个免费的webservice,或许大家用得着
- Scala中的抽象类型/类型参数
- angularjs – 错误:[$compile:nonassign]与指令’uibTab’
- angularjs – 可以在AngulrJS 1.3.0项目中使用angular / di
- MySQL 系列连载之 XtraBackup 全量热备 or 恢复实践(2)
- WebService体系之——HelloWorld搭建
- typescript – angular-cookies绝对类型
- twitter-bootstrap – Twitter Bootstrap:在单页面应用程序