2014-10-24 18 views
16

Tôi có tuyên bố có điều kiện tuyên bố 'Biểu thức quá phức tạp để được giải quyết trong thời gian hợp lý. Nếu có nhiều hơn khoảng 5 câu lệnh chứa trong điều kiện của tôi, nó không thành công với lỗi đó. Điều này dường như không phải là một cái gì đó mà nên xảy ra trên biên dịch, nhìn thấy như là tuyên bố không phải là tất cả những phức tạp. Đây có phải là lỗi mà bất kỳ ai khác đã gặp phải không? Có một giải pháp nào khác ngoài việc phân chia các điều kiện của tôi không?Nếu điều kiện không có biểu thức quá phức tạp

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

      } 

Trả lời

21

Có vấn đề đã biết - xem thêm this answer.

Giải pháp là để lưu trữ các biểu thức logic vào một biến, sử dụng một tuyên bố multiline:

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

Một chút lạ cho một ngôn ngữ mạnh mẽ như vậy ... nhưng đó là một (hy vọng tạm thời) đánh đổi.

Các vấn đề liên quan