这是一个重新打开的问题。
我为它寻找一种语言和支持平台,默认情况下该语言可以具有传递引用或传递名称语义。我知道一点历史,有 Algol、Fortran,还有 C++ 可以使它成为可能;但是,基本上,我寻找的是更现代的东西,并且在默认情况下,首选提到的值传递方法(隐式假设)。
我问这个问题,因为在我看来,pass-by-ref/name 的一些优点似乎很明显。例如,当它用于独立代理时,不需要复制值(在某种程度上),并且在这种情况下性能不会降级很多。因此,我可以在富客户端应用程序或一些游戏风格或独立服务类应用程序中使用它。
对我来说,主要优势是符号的身份与其当前值之间的明确分离。我的意思是当没有冗余复制时,您知道您正在使用您查询/接收的确切符号/路径。并且对值进行装箱不会干扰程序的实际逻辑。
我知道有 C#ref
关键字,但它不是那么内在,虽然可以接受。同样,我意识到引用传递语义几乎可以用任何语言模拟(Java 作为一个即时示例)等等.. 不确定通过名称传递:)
你会推荐什么 - 在适当的地方为此类需求创建类似 DSL 的东西;或者使用一些我已经知道的语言?也许,我错过了什么?
谢谢!
更新:目前,我认为 Haskell 是合适的。但是我没有做太多调查,所以我想我会在以后更新这个文本。