当前位置: 首页 > 面试题库 >

如果条件失败且表达式过于复杂

东门修能
2023-03-14
问题内容

我有一条条件性声明,声称“表达过于复杂,无法在合理的时间内解决。如果在我的条件语句中包含的语句多于5个,它将失败并显示该错误。看起来该语句并不是那么复杂,这似乎不应该在编译时发生。这是其他任何人都遇到的错误吗?除了拆分我的条件之外,还有其他解决方案吗?

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")
                ){

            }

问题答案:

解决方案是使用多行语句将逻辑表达式存储到变量中:

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 {
    }
}

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



 类似资料:
  • 我试图从用#字符分隔的字符串中提取一个简单的句子。 有了这个模式 现在,有趣的是,当字符串包含换行符时,正则表达式不匹配 但是如果我从字符串中删除\n,它可以正常工作。知道如何解决这个问题吗?

  • New in Django 1.8. 条件表达式允许你在过滤器、注解、聚合和更新操作中使用 if ... elif ... else的逻辑。条件表达式为表中的每一行计算一系列的条件,并且返回匹配到的结果表达式。条件表达式也可以像其它 表达式一样混合和嵌套。 条件表达式类 我们会在后面的例子中使用下面的模型: from django.db import models class Client(m

  • 复杂的表达式 当你有一个复杂的 if 子句的时候,你应该把它们提取出来赋给一个 BOOL 变量,这样可以让逻辑更清楚,而且让每个子句的意义体现出来。 BOOL nameContainsSwift = [sessionName containsString:@"Swift"]; BOOL isCurrentYear = [sessionDateCompontents year] == 2

  • 当需要根据表达式,而不是参数的值或数量进行匹配时,条件表达式(Guards)就显得非常有用。如果你熟悉函数式编程的话,对条件表达式也不会陌生。 为了尽可能地接近CSS的语言结构,Less使用关键字 when 而不是 if/else来实现条件判断,因为 when 已经在CSS的 @media query 特性中被定义。 表达式中可以使用比较运算符、逻辑运算符、或检查函数来进行条件判断。 1、比较运算

  • 尤达表达式 不要使用尤达表达式。尤达表达式是指,拿一个常量去和变量比较而不是拿变量去和常量比较。它就像是在表达 “蓝色是不是天空的颜色” 或者 “高个是不是这个男人的属性” 而不是 “天空是不是蓝的” 或者 “这个男人是不是高个子的” (译者注:名字起源于星球大战中尤达大师的讲话方式,总是用倒装的语序) 推荐: if ([myValue isEqual:@42]) { ... 不推荐: if ([

  • 英文原文:http://emberjs.com/guides/templates/conditionals/ 有些时候,或许我们只希望在一个属性存在的时候显示一部分模板。 这时,我们就可以使用{{#if}}助手按条件渲染一个代码块,如下所示: 1 2 3 {{#if person}} Welcome back, <b>{{person.firstName}} {{person.lastNam