【发布时间】:2015-08-13 12:00:16
【问题描述】:
我想知道如何更改下面的代码,这样bmBc 是在编译时计算的。下面的一个适用于运行时,但它并不理想,因为我需要在 compile-time 知道 bmBc 表。我很感激有关如何改进这一点的建议。
import std.conv:to;
import std.stdio;
int [string] bmBc;
immutable string pattern = "GCAGAGAG";
const int size = to!int(pattern.length);
struct king {
void calculatebmBc(int i)()
{
static if ( i < size -1 )
bmBc[to!string(pattern[i])]=to!int(size-i-1);
// bmBc[pattern[i]] ~= i-1;
calculatebmBc!(i+1)();
}
void calculatebmBc(int i: size-1)() {
}
}
void main(){
king myKing;
const int start = 0;
myKing.calculatebmBc!(start)();
//1. enum bmBcTable = bmBc;
}
【问题讨论】:
-
你能添加完整的代码示例吗?目前:ASIZE、ALPHABET、尺寸未知。还请指定编译器版本和平台。很可能您在 calculatebmBc!(S,C,I,i+1)(pattern ,bmBc) 中有无限递归
-
@sibnick ,谢谢,我刚刚编辑了代码,并将其剪切以指向我的确切问题。
标签: struct d template-meta-programming compile-time