Μυστικά

Μυστικά

Άσκηση εκμάθησης

Εισαγωγή

Ανώνυμες συναρτήσεις

Η Gleam έχει συναρτήσεις πρώτης κλάσης, που σημαίνει ότι οι συναρτήσεις είναι κανονικές τιμές που μπορούν να εκχωρηθούν σε μεταβλητές, να περαστούν ως ορίσματα και να επιστραφούν από άλλες συναρτήσεις.

Μια συνάρτηση με όνομα που ορίζεται σε ένα module μπορεί να αναφερθεί με το όνομά της.

pub fn main() {
  // Assign the function to a variable
  let f = add_one
  
  // Invoke the function
  f(1) // -> 2
  f(2) // -> 3
}

fn add_one(x) {
  x + 1
}

Η Gleam έχει επίσης ανώνυμες συναρτήσεις, οι οποίες ορίζονται μέσα σε άλλες συναρτήσεις.

// Define the function
let f = fn(x) { x + 1 }

// Invoke the function
f(1) // -> 2
f(2) // -> 3

Ο τύπος μιας συνάρτησης γράφεται με σύνταξη παρόμοια με αυτή των ανώνυμων συναρτήσεων. Ο τύπος μιας συνάρτησης που παίρνει ένα Int και ένα Float και επιστρέφει ένα Int γράφεται έτσι:

fn(Int, Float) -> Int

Οι ανώνυμες συναρτήσεις μπορούν να αναφέρονται σε μεταβλητές που ήταν στην εμβέλεια όταν ορίστηκαν, γεγονός που τις κάνει κλειστότητες.

let secret_number = 42

// This function always returns 42
fn() { secret_number }

Η σύνταξη σύλληψης συνάρτησης παρέχει έναν βολικό συντομογραφικό τρόπο για τη δημιουργία ανώνυμων συναρτήσεων που περνούν ένα μόνο όρισμα σε μια συνάρτηση. Αυτές οι δύο εκφράσεις είναι ισοδύναμες:

// Anonymous function syntax
let f = fn(x) { my_function(1, 2, x) }

// Function capture syntax
let f = my_function(1, 2, _)

Οδηγίες

Σε αυτή την άσκηση, σου έχει ανατεθεί να γράψεις το λογισμικό για μια συσκευή κρυπτογράφησης που λειτουργεί εκτελώντας μετασχηματισμούς σε δεδομένα. Χρειάζεσαι έναν τρόπο να δημιουργείς ευέλικτα πολύπλοκες συναρτήσεις συνδυάζοντας απλούστερες συναρτήσεις μεταξύ τους.

Για κάθε εργασία, επέστρεψε μια ανώνυμη συνάρτηση που μπορεί να κληθεί από το περιβάλλον κλήσης.

1. Δημιούργησε έναν αθροιστή

Υλοποίησε τη secret_add. Θα πρέπει να επιστρέφει μια συνάρτηση που παίρνει ένα όρισμα και του προσθέτει το όρισμα που περνάς στη secret_add.

let adder = secret_add(2)
adder(2)
// -> 4

2. Δημιούργησε έναν αφαιρέτη

Υλοποίησε τη secret_subtract. Θα πρέπει να επιστρέφει μια συνάρτηση που παίρνει ένα όρισμα και του αφαιρεί το μυστικό που περνάς στη secret_subtract.

let subtractor = secret_subtract(2)
subtractor(3)
// -> 1

3. Δημιούργησε έναν πολλαπλασιαστή

Υλοποίησε τη secret_multiply. Θα πρέπει να επιστρέφει μια συνάρτηση που παίρνει ένα όρισμα και το πολλαπλασιάζει με το μυστικό που περνάς στη secret_multiply.

let multiplier = secret_multiply(7)
multiplier(3)
// -> 21

4. Δημιούργησε έναν διαιρέτη

Υλοποίησε τη secret_divide. Θα πρέπει να επιστρέφει μια συνάρτηση που παίρνει ένα όρισμα και το διαιρεί με το μυστικό που περνάς στη secret_divide.

let divider = secret_divide(3)
divider(32)
// -> 10

5. Δημιούργησε έναν συνδυαστή συναρτήσεων

Υλοποίησε τη secret_combine. Θα πρέπει να επιστρέφει μια συνάρτηση που παίρνει ένα όρισμα και του εφαρμόζει με τη σειρά τις δύο συναρτήσεις που περνάς στη secret_combine.

let multiply = secret_multiply(7)
let divide = secret_divide(3)
let combined = secret_combine(multiply, divide)

combined(6)
// -> 14
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Gleam Exercism

Έτοιμος να ξεκινήσεις την άσκηση Μυστικά;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Gleam με 33 έννοιες122 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.