FFL:无法识别来自 where 子句的第二个标识符
FFL: second identifier from where clause not recognized
我相信我的语法是正确的,但出于某种原因,Anura FFL 解析器无法识别我的 where 子句中定义的第二个标识符 choice
。我错过了什么?
def(class creature creature, class game_state game) ->commands [
if(creature.choices,
if(choice < size(player.deck), [
set(player.deck, player.deck[0:choice] + player.deck[choice+1:]),
game.crypt.spawn_cards(creature.summoner, [card]),
set(creature.effects_tracking['Buried Treasure'], card),
] where card=player.deck[choice]
) where player=game.players[creature.summoner],
choice=creature.choices[0]
),
]
它给我这个错误:
formula.cpp:1067 ASSERTION FAILED: Unknown identifier 'choice' :
if(choice < size(player.deck), [
^-----^
注意:如果我将其更改为 where a=... where b=...
而不是 where a=... , b=...
然后它会解析。
逗号被解释为 if() 的参数分隔符 -- 它是模棱两可的,解析器无法分辨其意图。您必须使用括号来消除歧义,尽管我只建议使用 there where...where 语法,因为它更可靠。逗号对此类问题过于开放,因此不推荐使用有关 where 子句的语法。
我相信我的语法是正确的,但出于某种原因,Anura FFL 解析器无法识别我的 where 子句中定义的第二个标识符 choice
。我错过了什么?
def(class creature creature, class game_state game) ->commands [
if(creature.choices,
if(choice < size(player.deck), [
set(player.deck, player.deck[0:choice] + player.deck[choice+1:]),
game.crypt.spawn_cards(creature.summoner, [card]),
set(creature.effects_tracking['Buried Treasure'], card),
] where card=player.deck[choice]
) where player=game.players[creature.summoner],
choice=creature.choices[0]
),
]
它给我这个错误:
formula.cpp:1067 ASSERTION FAILED: Unknown identifier 'choice' :
if(choice < size(player.deck), [
^-----^
注意:如果我将其更改为 where a=... where b=...
而不是 where a=... , b=...
然后它会解析。
逗号被解释为 if() 的参数分隔符 -- 它是模棱两可的,解析器无法分辨其意图。您必须使用括号来消除歧义,尽管我只建议使用 there where...where 语法,因为它更可靠。逗号对此类问题过于开放,因此不推荐使用有关 where 子句的语法。