如果条件因表达式过于复杂而失败 [英] If condition failing with expression too complex

查看:24
本文介绍了如果条件因表达式过于复杂而失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个条件语句,声称表达式太复杂,无法在合理的时间内解决".如果我的条件中包含超过 5 个左右的语句,则它会因该错误而失败.这似乎不是编译时应该发生的事情,因为语句并不是那么复杂.这是其他人遇到的错误吗?除了拆分我的条件之外,还有其他解决方案吗?

I have a conditional statement that claims the 'Expression was too complex to be solved in reasonable time. If there are any more than around 5 contains statements in my conditional, it fails with that error. This does not seem like something that should be happening on compile, seeing as the statement isn't all that complex. Is this a bug that anyone else has run into? Is there a solution other than splitting up my conditions?

else if(
                contains(JSONDict.keys.array, "id") &&
                contains(JSONDict.keys.array, "part_number") &&
                contains(JSONDict.keys.array, "sales_part_number") &&
                contains(JSONDict.keys.array, "include_in_search") &&
                contains(JSONDict.keys.array, "description") &&
                contains(JSONDict.keys.array, "brand") &&
                contains(JSONDict.keys.array, "product_group") &&
                contains(JSONDict.keys.array, "product_design") &&
                contains(JSONDict.keys.array, "material") &&
                contains(JSONDict.keys.array, "line") &&
                contains(JSONDict.keys.array, "unit_of_mass") &&
                contains(JSONDict.keys.array, "coating") &&
                contains(JSONDict.keys.array, "pcs_converstion") &&
                contains(JSONDict.keys.array, "appRim") &&
                contains(JSONDict.keys.array, "appSegment") &&
                contains(JSONDict.keys.array, "series") &&
                contains(JSONDict.keys.array, "product_application")
                ){

            }

推荐答案

是的,这是一个已知问题 - 另请参阅此答案.

Yes that's a known issue - see also this answer.

解决办法是将逻辑表达式存入一个变量中,使用多行语句:

The solution is to store the logical expression into a variable, using a multiline statement:

else {
    var logicalExpression = contains(JSONDict.keys.array, "id") &&
            contains(JSONDict.keys.array, "part_number") &&
            contains(JSONDict.keys.array, "sales_part_number") &&
            contains(JSONDict.keys.array, "include_in_search")
    logicalExpression = logicalExpression && contains(JSONDict.keys.array, "description") &&
            contains(JSONDict.keys.array, "brand") &&
            contains(JSONDict.keys.array, "product_group") &&
            contains(JSONDict.keys.array, "product_design")
    // ... etc.
    if logicalExpression {
    }
}

对于如此强大的语言来说有点奇怪……但这是一个(希望是暂时的)权衡.

A little weird for such a powerful language... but it's a (hopefully temporary) trade off.

这篇关于如果条件因表达式过于复杂而失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆