• MistressRemilia@lemmy.sdf.org
    link
    fedilink
    English
    arrow-up
    4
    ·
    1 day ago
    # I mean, Crystal does have a ternary operator, too...
    bar = case something
          in "aaa" then true
          in "bbb" then false
          end
    
    foo = if bar
            69
          else
            42
          end
    
    ;; Or CASE or IF or COND or whatever
    (let* ((bar (ecase (something)
                  (:aaa t)
                  (:bbb nil)))
           (foo (if bar 69 42)))
      )
    
    • Sv443@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      5
      ·
      edit-2
      18 hours ago

      I’ve been called slurs before for using immediately invoked anonymous function expressions with switch cases in JS

      const [val1, val2] = (() => {
        switch(whatever) {
          case "foo": return [1, 2];
          case "bar": return [3, 4];
          default: return [0, 0];
        }
      }))();
      
    • ricecake@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      7
      ·
      1 day ago

      Yeah, the problem isn’t “conditional expressions”, it’s “terse syntax”, and operator rules that you need to just memorize because they’re special and different. Also being limited such that you need to nest the extremely deeply if you, for whatever, you need to have a complex inline condition.

      I like the case expression , although I mostly know it from erlang.