在 Scala 中模仿 C# out 和 ref —— 准备好使用功能了吗?

发布于 2024-12-26 18:19:38 字数 268 浏览 2 评论 0原文

在有限的意义上,自己编写 outref 类非常容易,但我的问题不是如何做到这一点 - 而是是否有一些功能(或类)准备好使用了吗?

我发现的最接近的是Reference特征(但它是一个特征)。

我需要那些,而不是元组,不是选项,也不是 Either 作为纯粹的结果,因为只有 ref/out 才能使链接 if 变得优雅。

In limited sense it is very easy to write out and ref classes on your own, but my question is not how to do it -- but are there some features (or classes) ready to use?

The closest thing I found is Reference trait (but it is a trait).

I need those, not tuple, not Option, and not Either as pure result, because only ref/out makes chaining ifs elegant.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你是我的挚爱i 2025-01-02 18:19:38

不,Scala 支持按值或按名称传递参数。通过引用传递参数实际上在 JVM 中很难正确完成,这可能是所有流行的 JVM 语言都没有它的原因之一。此外,out 和 ref 参数鼓励通过副作用进行编程,Scala 的设计试图尽可能避免这种情况。

至于 if 的链接,有多种方法可以实现像 Scala 中那样的效果。 “匹配”表达式是最明显的,您还可以使用 Option 或 Either 来研究单子组合。

No, Scala supports parameter passing by value or by name. Parameter passing by reference is actually quite difficult to accomplish correctly in the JVM, which is probably one reason why none of the popular JVM languages have it. Additionally, out and ref parameters encourage programming via side-effect, something the at design of Scala attempts to avoid wherever possible.

As for chaining of if's, there are a variety of ways to achieve some effects like that in Scala. "match" expressions are the most obvious, and you might also look into monadic compositions using Option or Either.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文