Pattern Matching a Function Body: Tuples

You cannot view this unit as you're not logged in yet. Go to Account to login.

19 Comments

  1. Francisco Quintero on November 24, 2020 at 7:02 pm

    Awesome and thank you!

    These pattern matching exercises have clear my mind and now I feel more confident. In the beginning I thought I wouldn’t complete the exercises without looking at the solution but gave them a try, read my notes, and tests passed!

    The second one was a tricky one, though, but was a nice thing to learn.

  2. Van Damrongsri on November 28, 2020 at 4:09 pm

    Is it a better practice to create multiple function clauses or to create one clause with a case statement?

    • Mark Ericksen on November 28, 2020 at 8:59 pm

      It’s a good question and this may sound like I’m dodging the question, but I’d say it really depends. đŸ™‚

      I prefer a case statement when the code is pretty simple. Like just a simple transformation. When the body of code in a case clause starts to get more involved or complex, I think about doing it differently. Separate function clauses can be easier to test as well.

  3. romenigld on December 12, 2020 at 7:34 am

    Sometimes reading some code I notice I needed to practice and put in my mind exactly these things.
    And here was a good sample to blow my mind.
    I like the exercise with tests, It was very helpful.
    In some books you don’t see this important things you need to understand and it’s very simple now for me.
    Thank’s!

    • Mark Ericksen on December 12, 2020 at 10:23 am

      Awesome! I’m so glad you’re enjoying it!

  4. Mark Johnson on February 20, 2021 at 9:55 am

    Very helpful. Practice makes perfect. Thanks for putting this tutorial together.
    Kinda reminds me of the Ruby Koans project, which was terrific.

  5. Uzo Enudi on March 9, 2021 at 7:47 am

    This is really cool. Got my pattern-matching confidence on a solid level. Much appreciation for this awesome tutorials and tests.

  6. Vitaly Vasiliev on June 5, 2021 at 3:17 am

    Thank you, the best i found so far. Would buy the next course for sure.

    Maybe you can do something with recursion? đŸ™‚

    • Mark Ericksen on June 5, 2021 at 6:50 am

      I’m glad it’s helpful! Yes, the CodeFlow course covers recursion along with a lot more.

  7. Maksym Kosenko on November 1, 2021 at 11:06 am

    The 2nd exercise was difficult for me, I don’t know why. Maybe I need to get used to use pattern matching more often. I have all tests passed with this solution:

    def has_three_elements?(tuple) do
        tuple_size(tuple) == 3
    end
    • Mark Ericksen on November 1, 2021 at 11:27 am

      Yes, that works! However you don’t get any of the benefits of pattern matching. What we’re building up to is letting the function header do the sorting for which function body will be executed. The pattern match replaces your conditional logic… gone are the days of multiple nested IF statements. Things become much clearer, easier to understand and maintain.

  8. Maksym Kosenko on November 1, 2021 at 11:17 am

    And I also interesting where’s exercise #4? why it’s missed.

    • Mark Ericksen on November 1, 2021 at 11:33 am

      Ha! That’s crazy that no one pointed that out before! There is no missing #4… the numbering was off. Fixed. Thanks!

  9. Juan BorrĂ¡s on August 25, 2023 at 1:35 am

    Is the usage of the match operator in test “return major US holiday for the month” a bug or a feature?

    • Mark Ericksen on September 28, 2023 at 7:41 am

      Can you be more specific? What part of the usage or example do you mean?

      • Juan BorrĂ¡s on October 4, 2023 at 3:35 am

        File `tuples_test.exs`, line 35, test described with “return major US holiday for the month”. you are using the match operator (`=`) all over the place. Is it (I presume) a bug or a feature?

        • Juan BorrĂ¡s on October 4, 2023 at 3:36 am

          I am referring to the code in `pattern_matching.zip` with MD5 checksum: f6b0fdd34f7f534997bd2117cde97364

        • Mark Ericksen on October 15, 2023 at 9:48 pm

          Thanks for responding. Since I’m not sure how it would be a bug, I’ll say it’s a feature. The match operator is very powerful in Elixir. In a test, we can use the match operator to assert that it matches the pattern without having to provide an exact match of the value.

          Hope that helps.

          • Juan BorrĂ¡s on October 23, 2023 at 2:18 am

            I gave it a thought and even though the match operator eventually produces a failed test I think it is misleading in the context of an `assert` evaluation. It could be a valid idiomatic usage of the match operator but I am not as experienced in the language as to avoid a little bit of astonishment while reading it.
            Still, I am thankful to the course author to gave me the opportunity to think about this matter.



Leave a Comment

You must be logged in to post a comment.