Вы не можете использовать значение элемента списка для его поиска.
Это то, что документация говорит о defined
в списках (массивы в TT).
Возвращает значение true или false, если определен элемент в списке, обозначенный аргументом.
[% list.defined(3) ? 'yes' : 'no' %]
При вызове без аргументов list.define возвращает true, если сам список определен (например, тот же эффект, что и scalar.defined).
Однако это то, что вы делаете.
lines = "polyline";
validLineOptions.defined(lines)
Используется переменная lines
со строковым значением в качестве index списка.Индекс должен быть числом, потому что мы не имеем дело с hash (ассоциативный массив).Значения в этом списке упорядочены и пронумерованы.Вы не можете получить к ним доступ по значению.
Я думаю, вы пытаетесь проверить, существует ли значение в списке.Есть несколько способов сделать это.
validLineOptions.grep(lines)
использует grep
, чтобы найти элемент в массиве и проверяет, является ли количество возвращаемых значений истинным.Если совпадений не найдено, возвращается false.
Однако вы также можете использовать хеш в качестве поиска.
lines = "polyline";
validLineOptions = {
'line' = 1,
'polyline' = 1,
'curved' = 1,
'ortho' = 1,
'spline' = 1
};
IF validLineOptions.exists(lines);
Это проверит, введена ли клавиша вхеш существует .Это простой способ проверить, разрешено ли значение.