Мне было интересно, как я могу изменить код ниже, так что bmBc
вычисляется во время компиляции. Один ниже работает во время выполнения, но он не идеален, так как мне нужно знать таблицу bmBc
во время компиляции. Я мог бы оценить совет, как я мог бы улучшить это.Почему структура неизвестна в compiletime в коде?
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
@sibnick, спасибо, я только что отредактировал код и отрезал его, чтобы указать на мою точную проблему. – Walker