diff options
4 files changed, 27 insertions, 37 deletions
diff --git a/src/content/chapter3_data_types/lesson04_record_destructuring/code.gleam b/src/content/chapter3_data_types/lesson04_record_destructuring/code.gleam deleted file mode 100644 index 2b99576..0000000 --- a/src/content/chapter3_data_types/lesson04_record_destructuring/code.gleam +++ /dev/null @@ -1,25 +0,0 @@ -import gleam/io - -pub type Fish { - Starfish(name: String, favourite_color: String) - // Jellyfish(name: String, jiggly: Bool) - // Swordfish(name: String) -} - -pub fn main() { - let lucy = Starfish("Lucy", "Pink") - let cassie = Starfish("Cassie", "Orange") - // let james = Jellyfish("James", True) - // let sammy = Swordfish("Sammy") - - let Starfish(lucy_name, lucy_colour) = lucy - let Starfish(cassie_name, ..) = cassie - // let Jellyfish(_, is_jiggly) = james - // let Swordfish(sammy_name) = sammy - - let names = [lucy_name, cassie_name] - - io.debug(names) - io.debug(lucy_colour) - // io.debug(is_jiggly) -} diff --git a/src/content/chapter3_data_types/lesson04_record_destructuring/en.html b/src/content/chapter3_data_types/lesson04_record_destructuring/en.html deleted file mode 100644 index 6774fc6..0000000 --- a/src/content/chapter3_data_types/lesson04_record_destructuring/en.html +++ /dev/null @@ -1,12 +0,0 @@ -<p> - Record destructuring is syntax that allows the extraction of multiple field values - from a record into distinct variables in a concise and efficient way. -</p> -<p> - To destructure a record without the use more rigorous pattern matching, - all variants of the record must have the same arity and each field must have the same type. -</p> -<p> - It is possible to use underscore <code>_</code> or the spread syntax <code>..</code> to - discard fields that are not required. -</p> diff --git a/src/content/chapter3_data_types/lesson04_record_pattern_matching/code.gleam b/src/content/chapter3_data_types/lesson04_record_pattern_matching/code.gleam new file mode 100644 index 0000000..1c58b0d --- /dev/null +++ b/src/content/chapter3_data_types/lesson04_record_pattern_matching/code.gleam @@ -0,0 +1,15 @@ +import gleam/io + +pub type Fish { + Starfish(name: String, favourite_color: String) + Jellyfish(name: String, jiggly: Bool) +} + +pub fn main() { + let lucy = Starfish("Lucy", "Pink") + + case lucy { + Starfish(_, favourite_color) -> io.debug(favourite_color) + Jellyfish(name, ..) -> io.debug(name) + } +} diff --git a/src/content/chapter3_data_types/lesson04_record_pattern_matching/en.html b/src/content/chapter3_data_types/lesson04_record_pattern_matching/en.html new file mode 100644 index 0000000..2c0c2fa --- /dev/null +++ b/src/content/chapter3_data_types/lesson04_record_pattern_matching/en.html @@ -0,0 +1,12 @@ +<p> + It is possible to pattern match on a record, this allows for the extraction + of multiple field values from a record into distinct variables in a concise and efficient way. +</p> +<p> + the let key word can only match on single variant custom types. For types with more variants + a case statement must be used. +</p> +<p> + It is possible to use underscore <code>_</code> or the spread syntax <code>..</code> to + discard fields that are not required. +</p> |