Kurzusok
/
Gleam
Gleam
/
Feladatok
/
Tracks on Tracks on Tracks
Tracks on Tracks on Tracks

Tracks on Tracks on Tracks

Tanulófeladat

Bevezetés

Listák

A Gleamben egy lista egy megváltoztathatatlan gyűjtemény, amely nulla vagy több értéket tartalmaz. Egy listában minden értéknek ugyanolyan típusúnak kell lennie. Mivel a listák megváltoztathatatlanok, miután létrehoztál egy listát, az értéke soha nem változhat meg. Minden függvény vagy operátor, amely úgy tűnik, hogy módosítja a listát (például hozzáad egy elemet), valójában egy új listát ad vissza.

A listákat így definiálhatod:

let empty = []
let singleValue = [5]
let threeValues = ["a", "b", "c"]

A leggyakoribb módja annak, hogy elemet adj a listához, a spread szintaxis használata:

let two_to_four = [2, 3, 4]
let one_to_four = [1, ..two_to_four]
// -> [1, 2, 3, 4]

A Gleam standard könyvtárában található gleam/list modul számos hasznos függvényt tartalmaz a listákkal való munkához. Ezt a modult nagyon gyakran használják a Gleam-kódban, ezért érdemes megismerkedned vele.

A listaminták arra is használhatók a case kifejezésekben, hogy listákra illeszkedj, és a bennük lévő értékeket változókhoz rendeld:

pub fn describe(list: List(String)) -> String {
  case list {
    [] -> "Empty list"
    [x] -> "List with one item: " <> x
    [x, y] -> "List with two items: " <> x <> " and " <> y
    _ -> "List with three or more items"
  }
}

Amellett, hogy pontos hosszúságú listákra illeszkedhetsz, a spread szintaxissal legalább egy bizonyos hosszúságú listákra is illeszkedhetsz:

pub fn describe(list: List(String)) -> String {
  case list {
    [_, _, ..] -> "List with at least two items"
    [_] -> "List with one item"
    [] -> "Empty list"
  }
}

A spread szintaxis arra is használható, hogy a lista maradékát egy változóhoz rendeld:

pub fn remove_first_item(list: List(String)) -> List(String) {
  case list {
    // Return the list without the first item
    [_, ..rest] -> rest

    // There's no first item to remove, return an empty list
    _ -> []
  }
}

A case kifejezéseknek minden lehetséges értékre mintát kell tartalmazniuk abból a típusból, amelyre illeszkednek, ezért gyakran használnak egy záró, eldobó mintát (_), hogy kezeljék a maradék értékeket.

Utasítások

Ebben a feladatban olyan kódot fogsz írni, amely nyomon követi azon programozási nyelvek listáját, amelyeket meg szeretnél tanulni az Exercism-ön.

Hat részfeladat vár rád, és mindegyikben listákkal fogsz foglalkozni.

1. Hozz létre egy új listát

Ahhoz, hogy nyomon követhesd azokat a nyelveket, amelyeket meg szeretnél tanulni, létre kell hoznod egy új listát. Definiáld a new_list függvényt, amely egy új, üres listát ad vissza.

new_list()
// -> []

2. Definiálj egy létező listát

Jelenleg van egy papírlapod, amelyen felsorolva vannak a nyelvek, amelyeket meg szeretnél tanulni: Gleam, Go és TypeScript. Definiáld az existing_list függvényt, hogy ezt a listát adja vissza.

existing_list()
// -> ["Gleam", "Go", "TypeScript"]

3. Adj hozzá egy új nyelvet egy listához

Ahogy felfedezded az Exercism-öt, és egyre érdekesebb nyelveket találsz, szeretnéd felvenni őket a listádra. Valósítsd meg az add_language függvényt, amely egy új nyelvet szúr be a listád elejére.

add_language(["OCaml", "Elixir"], "Scheme")
// -> ["Scheme", "OCaml", "Elixir"]

4. Számold meg a listában szereplő nyelveket

Egyesével megszámolni a nyelveket kényelmetlen. Valósítsd meg a count_languages függvényt, amely megszámolja a listádon lévő nyelveket.

count_languages(["jq", "Elm", "Rust", "Kotlin"])
// -> 4

5. Fordítsd meg a listát

Egy ponton rájössz, hogy a listád valójában fordított sorrendben van! Valósítsd meg a reverse_list függvényt, amely megfordítja a listádat.

reverse_list(["Python", "Julia", "Idris", "COBOL"])
// -> ["COBOL", "Idris", "Julia", "Python"]

6. Ellenőrizd, hogy izgalmas-e a lista

Bár minden nyelvet szeretsz, a Gleam különleges helyet foglal el a szívedben. Ezért igazán izgalmas számodra egy nyelvek listája, ha:

  • A lista első eleme a Gleam.
  • A lista második eleme a Gleam, és a listán két vagy három nyelv szerepel.

Valósítsd meg az exciting_list függvényt, amely ellenőrzi, hogy izgalmas-e egy nyelvlista:

exciting_list(["Lua", "Gleam"])
// -> True
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Gleam Exercism

Készen állsz elkezdeni a(z) Tracks on Tracks on Tracks feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Gleam nyelvet 33 fogalom122 feladat segítségével, valódi emberi mentorálással, mindez ingyen.