Made with KolourPaint and screenshots from Kate (with the GitHub theme).

  • @ThirdConsul@lemmy.ml
    link
    fedilink
    36 hours ago

    To be honest I always disliked variable declaration without value assignment, so to me both options suck. :)

    • @notarobot@lemm.ee
      link
      fedilink
      2
      edit-2
      1 hour ago

      What about

      Let ret: Number
      If (someCondition) {
          <a lot of expensive calculations>
          ret = resultOfOperations
      } else {
          <a lot of other different expensive operations>
          ret = resultOfOtherOperations
      }
      return ret
      

      You can’t declare ret inside the brackets

      • @ferric_carcinization@lemmy.ml
        link
        fedilink
        English
        11 hour ago

        Rust would allow you to

        let ret = if some_condition {
            <a lot of expensive calculations>
            result_of_operations
        } else {
            <a lot of other different expensive calculations>
            result_of_other_operations
        };
        

        Now you don’t have to declare it inside the blocks.

    • CarrotsHaveEars
      link
      fedilink
      15 hours ago

      What about you declare (then it gets allocated in stack) it and pass it to a different context for assignment?

      • @ThirdConsul@lemmy.ml
        link
        fedilink
        1
        edit-2
        2 hours ago

        Well, I don’t know your use case well enough, but I guess you might have perfect reason for that behavior.

        One thing that comes to my mind is the old Try in C#

        bool parsedSuccessfully = int.TryParse("123", out int result);
        

        But I guess more popular approach would be to use Error as Values, right?

        E.g. something like this

        Outcome<Exception, Int> result = int.TotallyNewParse("123");