在 D 中定义关联数组时出错
Error in Defining an associative array in D
所以我想实现一个哈希查找来将密码子翻译成 D 中的氨基酸。当我写
int[string] codon_table = [
"ATG": 'M',
"TTT": 'F', "TTC": 'F', "TTA": 'L',
"TTG": 'L', "CTT": 'L', "CTC": 'L',
"CTA": 'L', "CTG": 'L', "ATT": 'I',
"ATC": 'I', "ATA": 'I', "GTT": 'V',
"GTC": 'V', "GTA": 'V', "GTG": 'V',
"TCT": 'S', "TCC": 'S', "TCA": 'S',
"TCG": 'S', "CCT": 'P', "CCC": 'P',
"CCA": 'P', "CCG": 'P', "ACT": 'T',
"ACC": 'T', "ACG": 'T', "GCT": 'A',
"GCC": 'A', "GCA": 'A', "GCG": 'A',
"TAT": 'Y', "TAC": 'Y', "TAA": '*',
"TAG": '*', "CAT": 'H', "CAC": 'H',
"CAA": 'Q', "CAG": 'Q', "AAT": 'N',
"AAC": 'N', "AAA": 'K', "AAG": 'K',
"GAT": 'D', "GAC": 'D', "GAA": 'E',
"GAG": 'E', "TGT": 'C', "TGC": 'C',
"TGA": '*', "TGG": 'W', "CGT": 'R',
"CGC": 'R', "CGA": 'R', "CGG": 'R',
"AGT": 'S', "AGC": 'S', "AGA": 'R',
"AGG": 'R', "GGT": 'G', "GGC": 'G',
"GGA": 'G', "GGG": 'G'
];
代码无法编译,我得到
Error: no-constant expression
我认为这有点奇怪,因为我认为将关联数组编写为常量并将其用作查找是微不足道的 table。例如,当我追加枚举时;
enum int[string] codon_table = [...]
它似乎有效。
在定义这种关联数组时,使用 enum
与 static int[string]
的权衡是什么?
我做错了什么?
试试这个:
immutable int[string] codon_table;
static this() {
codon_table = [
"ATG": 'M',
// ...
"GGA": 'G', "GGG": 'G'
];
}
我制作了 table immutable,因为您不太可能需要更改查找 table。
也就是说,您的初始化程序不起作用有点奇怪。您可能想 post 在 D 论坛上这样做。
所以我想实现一个哈希查找来将密码子翻译成 D 中的氨基酸。当我写
int[string] codon_table = [
"ATG": 'M',
"TTT": 'F', "TTC": 'F', "TTA": 'L',
"TTG": 'L', "CTT": 'L', "CTC": 'L',
"CTA": 'L', "CTG": 'L', "ATT": 'I',
"ATC": 'I', "ATA": 'I', "GTT": 'V',
"GTC": 'V', "GTA": 'V', "GTG": 'V',
"TCT": 'S', "TCC": 'S', "TCA": 'S',
"TCG": 'S', "CCT": 'P', "CCC": 'P',
"CCA": 'P', "CCG": 'P', "ACT": 'T',
"ACC": 'T', "ACG": 'T', "GCT": 'A',
"GCC": 'A', "GCA": 'A', "GCG": 'A',
"TAT": 'Y', "TAC": 'Y', "TAA": '*',
"TAG": '*', "CAT": 'H', "CAC": 'H',
"CAA": 'Q', "CAG": 'Q', "AAT": 'N',
"AAC": 'N', "AAA": 'K', "AAG": 'K',
"GAT": 'D', "GAC": 'D', "GAA": 'E',
"GAG": 'E', "TGT": 'C', "TGC": 'C',
"TGA": '*', "TGG": 'W', "CGT": 'R',
"CGC": 'R', "CGA": 'R', "CGG": 'R',
"AGT": 'S', "AGC": 'S', "AGA": 'R',
"AGG": 'R', "GGT": 'G', "GGC": 'G',
"GGA": 'G', "GGG": 'G'
];
代码无法编译,我得到
Error: no-constant expression
我认为这有点奇怪,因为我认为将关联数组编写为常量并将其用作查找是微不足道的 table。例如,当我追加枚举时;
enum int[string] codon_table = [...]
它似乎有效。
在定义这种关联数组时,使用 enum
与 static int[string]
的权衡是什么?
我做错了什么?
试试这个:
immutable int[string] codon_table;
static this() {
codon_table = [
"ATG": 'M',
// ...
"GGA": 'G', "GGG": 'G'
];
}
我制作了 table immutable,因为您不太可能需要更改查找 table。
也就是说,您的初始化程序不起作用有点奇怪。您可能想 post 在 D 论坛上这样做。