在处理异构数据时需要花费大量资金才能部分更改保存数据的简单对象。例如,您可能希望添加,删除或重命名属性,或者连接两个对象。这在动态语言中很容易,但我想知道静态语言是否有任何聪明的解决方案?
要修改想法,是否有任何语言可能通过某种静态mixin语法启用,如下所示(C#):
var hello = new { Hello = "Hello" };
var world = new { World = "World" };
var helloWorld = hello + world;
Console.WriteLine(helloWorld.ToString());
//outputs {Hello = Hello, World = World}
这似乎是可能的,因为没有使用运行时信息。是否有具有此功能的静态语言?
我正在考虑的限量版本是F#的copy-and-update record expression:
let myRecord3 = { myRecord2 with Y = 100; Z = 2 }
答案 0 :(得分:1)
您所描述的内容在编程语言研究中称为记录连接。在用于记录连接的静态类型系统上已经有一些工作,主要是在Haskell或ML的自动类型推断的上下文中。据我所知,它还没有对任何主流编程语言产生影响。