From ec4c08571300e167dec2df26f191e6f8d09433c5 Mon Sep 17 00:00:00 2001 From: xxKeefer Date: Wed, 24 Apr 2024 20:54:52 +1000 Subject: feat: :sparkles: add examples and code for record destructuring #56 --- .../lesson04_record_destructuring/code.gleam | 25 ++++++++++++++++++++++ .../lesson04_record_destructuring/en.html | 12 +++++++++++ 2 files changed, 37 insertions(+) create mode 100644 src/content/chapter3_data_types/lesson04_record_destructuring/code.gleam create mode 100644 src/content/chapter3_data_types/lesson04_record_destructuring/en.html diff --git a/src/content/chapter3_data_types/lesson04_record_destructuring/code.gleam b/src/content/chapter3_data_types/lesson04_record_destructuring/code.gleam new file mode 100644 index 0000000..2b99576 --- /dev/null +++ b/src/content/chapter3_data_types/lesson04_record_destructuring/code.gleam @@ -0,0 +1,25 @@ +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 new file mode 100644 index 0000000..6774fc6 --- /dev/null +++ b/src/content/chapter3_data_types/lesson04_record_destructuring/en.html @@ -0,0 +1,12 @@ +

+ Record destructuring is syntax that allows the extraction of multiple field values + from a record into distinct variables in a concise and efficient way. +

+

+ 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. +

+

+ It is possible to use underscore _ or the spread syntax .. to + discard fields that are not required. +

-- cgit v1.2.3