代码之家  ›  专栏  ›  技术社区  ›  Patrick Parker

ffl:where子句的第二个标识符无法识别

  •  0
  • Patrick Parker  · 技术社区  · 6 年前

    我相信我在这一个上的语法是正确的,但是由于某种原因,anura ffl解析器无法识别第二个标识符。 choice 在我的WHERE子句中定义。我错过了什么?

    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=... 然后分析。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Denivarius    6 年前

    逗号被解释为if()的参数分隔符——这是不明确的,解析器不可能说出意图。您必须使用parens来消除歧义,不过我建议您使用where…where语法,因为它更可靠。逗号对这样的问题太开放了,所以不推荐使用WHERE子句的语法。

    推荐文章