Я создаю набор с именем BlockBelow, как показано в следующем коде (это является частью более крупной модели).
При этом я получаю некоторые блоки как пустые - данные таковы, что вероятно дать пустые наборы для некоторых блоков. Однако я хочу сделать проверку и заполнить пустые наборы BlockBelow, как показано ниже
{blockType} BlockBelow[b1 in PitBlocksType] =
{b | b in PitBlocksType: b1.i == b.i -1 &&
(b1.k == b.k ) &&
(b1.j == b.j) };
execute{
for(var i in PitBlocksType){
if ( BlockBelow[i] == {} ) BlockBelow[i] = i;
writeln(i, BlockBelow[i]);
}
}
Код без строки if дает вывод, как показано ниже в журнале сценариев, где видны пустые наборы, которые необходимо заполнить:
<"P74" 2 3 10> {<"P106" 3 3 10>}
<"P75" 2 3 11> {<"P107" 3 3 11>}
<"P76" 2 3 12> {}
<"P77" 2 4 2> {<"P108" 3 4 2>}
<"P78" 2 4 3> {<"P109" 3 4 3>}
<"P79" 2 4 4> {<"P110" 3 4 4>}
<"P80" 2 4 5> {<"P111" 3 4 5>}
<"P81" 2 4 6> {<"P112" 3 4 6>}
<"P82" 2 4 7> {<"P113" 3 4 7>}
<"P83" 2 4 8> {<"P114" 3 4 8>}
<"P84" 2 4 9> {<"P115" 3 4 9>}
<"P85" 2 4 10> {<"P116" 3 4 10>}
<"P86" 2 4 11> {<"P117" 3 4 11>}
<"P87" 3 2 2> {}
<"P88" 3 2 3> {}
<"P89" 3 2 4> {}
<"P90" 3 2 5> {}
<"P91" 3 2 6> {}
<"P92" 3 2 7> {}
Я получаю ошибку для оператора if. Любые предложения о том, как преодолеть это - либо с помощью if, либо с помощью любого другого метода для достижения цели заполнения пустых множеств i
---- РЕДАКТИРОВАТЬ ПОСЛЕ ОТВЕТА -------- -------
Извините, я забыл упомянуть, что {blockType} является кортежем
tuple blockType {
key string id;
int i;
int j;
int k;
};
Я попробовал функцию card (), но это не так не работает для кортежа