• Type: Feature Request
    • Status: Open (View Workflow)
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Labels:


      Consider adopting some behaviors from languages such as JavaScript or Groovy which allow for more clever conditional statements to be constructed. Consider this ticket a discussion on whether this is even possible and what implications it would have. I assume this might also require an on/off flag such as the null support feature.

      This table outlines a suggestion of how the following values would behave when cast to booleans:

      Value Truthiness
      null false
      Number false if 0, otherwise true
      String false if "", "false", or "no"; otherwise true.
      Array false if empty, otherwise true
      Struct false if empty, otherwise true
      Object true

      This would allow for the full ternary version of the Elvis operator (Assuming full null support):

      foo = null;
      bar = foo ? foo : "default";

      It would also simplify checking for the contents of structs and arrays:

      myArray = [1,2.3];
      if( myArray ) writeOut("Array has stuff");
      myStruct = {};
      if( !myStruct ) writeOut("Struct is empty");

      I think these changes might be somewhat straightforward and mostly affect the Caster class, but most importantly:

      1. Do we want this in CFML?
      2. Would this have serious implications in backwards compatibility?

      Other things to consider that are similar to Groovy would be Java Map, List and Iterator classes. True if not empty, or hasNext() is true.


        Gliffy Diagrams




              • Assignee:
                micstriit Michael Offner
                bdw429s Brad Wood
              • Votes:
                5 Vote for this issue
                4 Start watching this issue


                • Created: