A listák az Elixir nyelv beépített elemei. Alaptípusnak számítanak, és szögletes zárójellel jelöljük őket. A listák lehetnek üresek, vagy tetszőleges számú, bármilyen típusú elemet tartalmazhatnak. Például:
empty_list = []
one_item_list = [1]
two_item_list = [1, 2]
multiple_type_list = [1, :pi, 3.14, "four"]
Az Elixir a listákat láncolt listaként valósítja meg, ahol minden csomópont két értéket tárol: az első elemet, és egy másik listát az összes többi elemmel. A lista első elemét fejnek, a többi elemet tartalmazó listát pedig faroknak nevezzük. Ezt a jelölést a kódban is használhatjuk:
# [1] represented in [head | tail] notation
[1 | []]
# [1, 2, 3] represented in [head | tail] notation
[1 | [2 | [3 | []]]]
A [head | tail] jelöléssel elemeket fűzhetünk a lista elejére:
# Suppose
list = [2, 1]
[3, 2, 1] == [3 | list]
# => true
A Kernel modulban több függvény is segít a listák kezelésében, de emellett ott van a teljes List modul is.
# Check if 1 is a member of the list
1 in [1, 2, 3, 4]
# => true
Ebben a feladatban néhány függvényt kell megvalósítanod, amelyek egy programozási nyelvekből álló listát kezelnek.
Definiáld a new/0 függvényt, amely nem vár argumentumot, és egy üres listát ad vissza.
LanguageList.new()
# => []
Definiáld az add/2 függvényt, amely 2 argumentumot vár: egy nyelvlistát és egy nyelv string literálját. A kapott listát úgy kell visszaadnia, hogy az új nyelv a megadott lista elejére kerül.
language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Clojure")
# => ["Clojure"]
language_list = LanguageList.add(language_list, "Haskell")
# => ["Haskell", "Clojure"]
Definiáld a remove/1 függvényt, amely 1 argumentumot vár (egy nyelvlistát). A listát az első elem nélkül kell visszaadnia. Feltételezd, hogy a listában mindig van legalább egy elem.
language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Clojure")
# => ["Clojure"]
language_list = LanguageList.add(language_list, "Haskell")
# => ["Haskell", "Clojure"]
language_list = LanguageList.remove(language_list)
# => ["Clojure"]
Definiáld a first/1 függvényt, amely 1 argumentumot vár (egy nyelvlistát). A listában szereplő első nyelvet kell visszaadnia. Feltételezd, hogy a listában mindig van legalább egy elem.
language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elm")
# => ["Elm"]
language_list = LanguageList.add(language_list, "Prolog")
# => ["Prolog", "Elm"]
LanguageList.first(language_list)
# => "Prolog"
Definiáld a count/1 függvényt, amely 1 argumentumot vár (egy nyelvlistát). A listában lévő nyelvek számát kell visszaadnia.
language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elm")
# => ["Elm"]
language_list = LanguageList.add(language_list, "Prolog")
# => ["Prolog", "Elm"]
LanguageList.count(language_list)
# => 2
Definiáld a functional_list?/1 függvényt, amely 1 argumentumot vár (egy nyelvlistát). Boolean értéket kell visszaadnia. Igazat kell visszaadnia, ha a „Elixir” a lista egyik nyelve.
language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elixir")
# => ["Elixir"]
LanguageList.functional_list?(language_list)
# => true
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Elixir nyelvet 58 fogalom168 feladat segítségével, valódi emberi mentorálással, mindez ingyen.