在 D 中实现与 RandomAccessRange
兼容的固定维度向量的最聪明的方法是什么 interface在火卫一?我是否必须重新实现所有成员 opIndex
、length
等,还是通过委托(delegate)、别名或模板 mixin 等更聪明的方法?我一直在 github D 项目上查看几个固定大小的向量结构,但似乎没有一个关心与 Phobos 范围兼容。 更新:刚刚读到容器应该是引用类型,所以我想这不是在 D 中执行此操作的方法,对吗?
最佳答案
如果您的向量具有连续的内部存储,那么您只需从 opSlice()
返回该数据的一部分即可:
struct Vector
{
private real[4] data;
auto opSlice() { return data[]; }
}
容器不必是引用类型,但使用 opSlice
的任何一种方式都是从容器获取范围的常用方法。
关于range - Phobos-Range 兼容的固定维度向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18427079/