aboutsummaryrefslogtreecommitdiff
path: root/src/content/chapter1_functions/lesson08_labelled_arguments
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/chapter1_functions/lesson08_labelled_arguments')
-rw-r--r--src/content/chapter1_functions/lesson08_labelled_arguments/code.gleam16
-rw-r--r--src/content/chapter1_functions/lesson08_labelled_arguments/text.html23
2 files changed, 39 insertions, 0 deletions
diff --git a/src/content/chapter1_functions/lesson08_labelled_arguments/code.gleam b/src/content/chapter1_functions/lesson08_labelled_arguments/code.gleam
new file mode 100644
index 0000000..25bb8c1
--- /dev/null
+++ b/src/content/chapter1_functions/lesson08_labelled_arguments/code.gleam
@@ -0,0 +1,16 @@
+import gleam/io
+
+pub fn main() {
+ // Without using labels
+ io.debug(calculate(1, 2, 3))
+
+ // Using the labels
+ io.debug(calculate(1, add: 2, multiply: 3))
+
+ // Using the labels in a different order
+ io.debug(calculate(1, multiply: 3, add: 2))
+}
+
+fn calculate(value: Int, add addend: Int, multiply multiplier: Int) {
+ value * multiplier + addend
+}
diff --git a/src/content/chapter1_functions/lesson08_labelled_arguments/text.html b/src/content/chapter1_functions/lesson08_labelled_arguments/text.html
new file mode 100644
index 0000000..b1d771c
--- /dev/null
+++ b/src/content/chapter1_functions/lesson08_labelled_arguments/text.html
@@ -0,0 +1,23 @@
+<p>
+ When functions take several arguments it can be difficult to remember what the
+ arguments are, and what order they are expected in.
+</p>
+<p>
+ To help with this Gleam supports labelled arguments, where function arguments
+ are given an external label in addition to their internal name. These labels
+ are written before the argument name in the function definition.
+</p>
+<p>
+ When labelled arguments are used the order of the arguments does not matter,
+ but all unlabelled arguments must come before labelled arguments.
+</p>
+<p>
+ There is no performance cost to using labelled arguments, it does not allocate
+ a dictionary or perform any other runtime work.
+</p>
+<p>
+ Labels are optional when calling a function, it is up to the programmer to
+ decide what is clearest in their code.
+</p>
+
+