我正在开发一种处理数据分析的高级域特定语言。存在虚拟统一的一致性,即基于单一的索引是从科学角度出发的方式。当然程序员讨厌这种不匹配,但实际上我们所有的用户习惯使用x [i]来表示元素i而不是元素i-1。
是否有任何设计原则可用于与CLR保持一些理智的互操作性故事?我的感觉是,如果我们使用基于单一的变体自动翻译System.Collections空间,以及基于C#的API,我们应该有90%的方式。但我不确定。例如,我们应该自动重新定义IList接口吗?但是如果C#API实现CustomRemove(zeroBasedIndex)会发生什么呢?
我们还能做些什么来缓解这种痛苦的不匹配?我们应该将System.Collections放在一个基础上。
最后,CLR上是否有基于单一语言的例子?
答案 0 :(得分:2)
选项1:在列表中刻录条目。将元素0设置为空值,所有逻辑索引从1开始。
选项2:为列表创建自己的包装器并获取其getter并为您增加索引。
答案 1 :(得分:1)
VB用于允许您指定数组的基本索引,但该功能从未在VB.NET中实现。也就是说,您实际上可以在CLR中创建基于1的数组,但它们会稍慢,并且与其他CLR语言基本上不兼容。