加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

为什么Scala中有RichInt或RichX?

发布时间:2020-12-16 09:54:13 所属栏目:安全 来源:网络整理
导读:这是一个简单的问题. 为什么与Int相关的方法不在Int中? 相反,Scala不愿将相关方法放入RichInt并依赖隐式转换,以使它们像Int的方法一样工作. 何必? 解决方法 Scala不存在于真空中.它专门设计为托管在生态系统/平台上,主要用于另一种语言: Java平台,.NET平
这是一个简单的问题.

为什么与Int相关的方法不在Int中?
相反,Scala不愿将相关方法放入RichInt并依赖隐式转换,以使它们像Int的方法一样工作.

何必?

解决方法

Scala不存在于真空中.它专门设计为托管在生态系统/平台上,主要用于另一种语言: Java平台,.NET平台,ECMAScript平台,Cocoa等.

这意味着在某些情况下必须做出妥协,以使Scala能够无缝,高效地运行,并且具有主机平台的生态系统,库和语言的高性能.这就是为什么它有null,为什么它有类(它只能通过traits,并允许traits拥有构造函数),为什么它有包(因为它们可以干净地映射到Java包或.NET命名空间),为什么它没有没有正确的尾调用,没有具体的泛型等等.这甚至是为什么它有花括号,不是为了更容易与Java集成,而是为了更容易与Java开发人员的大脑集成.

scala.Int是一个假类,它代表一个本机平台整数(Java中的原始int,.NET中的System.Int32等).假的,除了主机环境提供的操作之外,它实际上没有任何其他方法.

另一种方法是在Int类中进行所有操作,并让编译器知道哪些方法是本机方法和哪些方法不是本机方法之间的区别.但这是一个特例,更有意义的是集中精力快速制作“丰富我的库”,这样所有程序员都可以从这些优化中受益,而不是花时间,金钱和资源进行仅适用于12的优化等等.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读