在 Scala 中模仿 C# out 和 ref —— 准备好使用功能了吗?
在有限的意义上,自己编写 out
和 ref
类非常容易,但我的问题不是如何做到这一点 - 而是是否有一些功能(或类)准备好使用了吗?
我发现的最接近的是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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,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.