#minizinc
Вопрос:
У меня есть массив логических значений, и я пытаюсь найти первый экземпляр, который является «истинным» :
set of int: people = 1..5;
array[people] of bool: status=[false, false, true, true, false ];
var int: objective= min([p | p in people where status[p]])
и я получаю «неоднозначную перегрузку при ошибке функции возвращаемого типа».
Комментарии:
1. Было бы полезно, если бы вы показали полную модель. Нет никакого определения
people
.2. Возможно, это было проблемой в более ранней версии MiniZinc. Используя текущую версию MiniZinc, фрагмент кода компилируется правильно.
3. Кажется, это вызвано тем, что, когда я создаю массив, есть предложение where; это предложение where возвращает «var opt: тип;»
4. Я не думаю, что в этом проблема. Когда я удаляю назначение
status
и делаю егоvar
, оно все равно компилируется правильно. Даже несмотря на то, что массив вmin
функции, безусловно, имеет типvar opt int
.