(para el lenguaje de programación "D")inicializar un array asociativo de los valores y de cadena struct teclas
He estado luchando tratando de inicializar una matriz asociativa que tiene elementos struct y debe ser indexable por una cuerda . Lo importaría como un módulo de un archivo separado.
Esto es lo que quiero lograr (y no funciona --- No sé si esto es posible):
mnemonic_info[string] mnemonic_table = [
/* name, format, opcode */
"ADD": {mnemonic_format.Format3M, 0x18},
...
/* NOTE: mnemonic_format is an enum type. */
/* mnemonic_info is a struct with a mnemonic_format and an ubyte */
];
Tenga en cuenta que esto funciona bien para las matrices indexables por los números enteros .
De manera óptima, me gustaría que este ser evaluados en tiempo de compilación, ya que no voy a cambiarlo. Sin embargo, si no es posible, me alegraría si me dijera la mejor manera de construir dicha matriz en/antes del tiempo de ejecución inmediato.
Lo necesito porque estoy escribiendo un ensamblador.
He buscado SO y los Internet para una respuesta, pero sólo pude encontrar ejemplos con números enteros, y otras cosas que no entendía o no podía hacer trabajar.
me gusta mucho D hasta ahora, pero parece difícil de aprender debido a que hay muchos tutoriales no estar en línea.
Gracias!
En una nota: es posible usar tuplas para los elementos de matriz asociativa en lugar de una estructura personalizada?
Editar
Hay una manera que he encontrado hasta ahora, pero es bastante feo:
mnemonic_info[string] mnemonic_table;
static this() { // Not idea what this does.
mnemonic_info entry;
entry.format = mnemonic_format.Format3M;
entry.opcode = 0x18;
mnemonic_table["ADD"] = entry;
/* ... for all entries. */
}
¿Qué error el compilador le da? No veo ningún error en su código, de acuerdo con: http://www.d-programming-language.org/hash-map.html – CedX
Me dan diferentes errores dependiendo de dónde pongo esto. Actualmente, al ponerlo en el nivel superior del archivo .d, aparece "Error: no es un inicializador de matriz asociativa". Supongo que esto significa que la sintaxis está desactivada. Cuando busco el error en Google, no hay hits. El sitio d tampoco enumera la sintaxis especial para los inicializadores de matriz asociativa. Estoy confundido. – Matej
¿Has intentado inicializarlo en varias declaraciones? mnemonic_info [string] mnemonic_table; mnemonic_table ["ADD"] = {mnemonic_format.Format3M, 0x18}; – CedX