gpt4 book ai didi

scala - 为什么 Scala 中有 RichInt 或 RichX?

转载 作者:行者123 更新时间:2023-12-04 22:45:18 26 4
gpt4 key购买 nike

这是一个简单的问题。

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

何苦?

最佳答案

Scala 不是凭空存在的。它专门设计为托管在生态系统/平台上,该平台主要为另一种语言设计:Java 平台、.NET 平台、ECMAScript 平台、Cocoa 等。

这意味着在某些情况下必须做出妥协,以便使 Scala 无缝、高效地运行,并与宿主平台的生态系统、库和语言一起运行。这就是为什么它有 null ,为什么它有类(它可以只使用特征,并允许特征具有构造函数),为什么它有包(因为它们可以干净地映射到 Java 包或 .NET 命名空间),为什么它没有适当的尾部调用,没有具体化泛型等。这也是为什么它有花括号,不是为了更容易与Java集成,而是更容易与Java开发人员的大脑集成。
scala.Int是一个假类,它代表一个原生平台整数(Java 中的原始 int,.NET 中的 System.Int32 等)。假的,除了宿主环境提供的操作之外,它真的没有任何方法。

另一种方法是在 Int 中进行所有操作。类并让编译器知道哪些方法是 native 的,哪些不是。但这是一个特例,通常集中精力让“丰富我的库”更快更有意义,这样所有程序员都可以从这些优化中受益,而不是将时间、金钱和资源花在仅适用于十二个的优化上左右类。

关于scala - 为什么 Scala 中有 RichInt 或 RichX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29655076/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com