Je me demandais comment je pourrais changer le code ci-dessous tel que le bmBc
est calculé au moment de la compilation. Celui ci-dessous fonctionne pour l'exécution mais ce n'est pas idéal puisque j'ai besoin de connaître la table bmBc
au moment de la compilation. Je pourrais apprécier des conseils sur la façon dont je pourrais améliorer cela.Pourquoi la structure est inconnue à compiletime dans le code?
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;
}
Pouvez-vous ajouter un exemple de code complet? Actuellement: ASIZE, ALPHABET, la taille sont inconnues. Veuillez également spécifier la version du compilateur et la plate-forme. Très probablement vous avez une récursion infinie dans calculatebmBc! (S, C, I, i + 1) (motif, bmBc) – sibnick
@sibnick, merci, je viens d'éditer le code, et le couper pour pointer vers mon problème exact. – Walker