Сообщение об ошибке отличается от vala.
Сообщение об ошибке Genie выглядит как проблема синтаксического анализа компилятора. Сообщение об ошибке vala более понятно.
мой тест в Вал:
void main() {
var h = new HashTable<string, int[]> (str_hash, str_equal);
}
сообщения об ошибке:
error: `int[]' is not a supported generic type argument,
use `?' to box value types
выглядит просто не поддерживают "массив", а другие все работает. «массив» не может быть элементом в любом контейнере (HashTable, Array, GenericArray, array ..)
какой-либо тест: все работает!
[indent=4]
init
var h = new HashTable of string, HashTable of string, int (str_hash, str_equal)
h["a"] = new HashTable of string, int (str_hash, str_equal)
h["a"]["b"] = 123
stdout.printf ("%d\n", h["a"]["b"])
var a = new HashTable of string, Array of int (str_hash, str_equal)
a["a"] = new Array of int
// a["a"].append_val (456)
// error: lvalue expected
var x = 456
a["a"].append_val (x)
stdout.printf ("%d\n", a["a"].index(0))
var b = new HashTable of string, GenericArray of int (str_hash, str_equal)
b["a"] = new GenericArray of int
b["a"].add (567)
stdout.printf ("%d\n", b["a"].get (0))
var d = new array of Array of int = {new Array of int(), new Array of int}
// ERROR IF {new Array of int, new Array of int}
var y = 321
d[0].append_val (y)
stdout.printf ("%d\n", d[0].index(0))
объяснение от: http://blog.gmane.org/gmane.comp.programming.vala/month=20140701
Нет правильной Синтекс, он просто не поддерживает это.
Это не совсем правильно, 'var h = new HashTable строки, Array of int (str_hash, str_equal)' работает в Genie. Поэтому у меня был правильный синтаксис, во-первых, это только то, что он не работает с простыми массивами. –