2014-10-24 34 views
16

'İfadenin makul sürede çözülmesi çok karmaşık olduğunu iddia eden bir şartlı ifadem var. Koşulumda 5'den daha fazla ifade varsa, bu hatayla başarısız olur. Bu, derlemede olması gereken bir şey gibi görünmüyor, çünkü deyim bütün bu karmaşık değil. Bu, başkalarının içine girdiği bir böcek mi? Şartlarımı parçalamaktan başka bir çözüm var mı?İfade çok karmaşık bir şekilde başarısız olursa

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

      } 

cevap

21

Evet, bilinen bir sorun - ayrıca bkz. this answer.

çözüm satırlı ifadesini kullanarak, bir değişkene mantıksal ifadeyi saklamaktır:

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

böyle güçlü bir dil için biraz garip ... ama bir (umarım geçici) bulunuyor kapalı ticaret.

İlgili konular