2014-10-24 8 views
16

Ich habe eine bedingte Anweisung, die behauptet, 'Ausdruck war zu komplex, um in angemessener Zeit gelöst zu werden. Wenn es mehr als etwa 5 contains-Anweisungen in meinem conditional gibt, schlägt es mit diesem Fehler fehl. Dies scheint nicht etwas zu sein, was beim Kompilieren passieren sollte, da die Aussage nicht so komplex ist. Ist das ein Fehler, auf den jemand anderes gestoßen ist? Gibt es eine andere Lösung als meine Bedingungen aufzulösen?Wenn Bedingung mit Ausdruck zu komplex fehlschlägt

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

      } 

Antwort

21

Ja, das ist ein bekanntes Problem - siehe auch this answer.

Die Lösung ist die logische Ausdruck in einer Variablen zu speichern, eine mehrzeilige Anweisung:

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

Ein wenig seltsam für eine so mächtige Sprache ... aber es ist eine (hoffentlich vorübergehend) abwägen.

Verwandte Themen