JavaScript je ZLO 2.0
nenávistné poznámky vzteklého kodéra
Moje nová hračka - List
Nedávno jsem konstatoval že už jsem dost dlouho nenapsal nic v JavaScriptu. Protože mi už nějaký čas lezou na nervy nedostatky klasických datových typů JavaScriptu, naimplementoval jsem si konstruktor List který by měl pomáhat při práci s řídkými poli.
Řídké datové pole je takové pole, které může obsahovat díry, tedy prvky jejichž obsah není definován. To je v javascriptu standardní chování typu Array, nicméně nebylo by od věci obohatit ho o různé podpůrné funkce. Tady je stručný popis objektu typu List co jsem tak iniciativně zbastlil:
| veřejné vlastnosti |
int List.length - délka seznamu
|
|---|---|
| veřejné metody |
Array List.toArray([boolean dense = false]) - vrátí obsah seznamu jako pole typu Array. Nastavíme-li argument dense na true, vrátí obsah v podobě hustého pole.
|
mixed List.get([int index]) - vrátí prvek seznamu. Není-li specifikován index prvku, vrátí celé datové pole. |
|
boolean List.contains(mixed item, [boolean exact = true]) - zjistí zda seznam obsahuje položku item. |
|
List List.insert(mixed item, [int index]) - vloží položku na první volné místo. V případě že je definován index, pokusí se ji vložit na tento index a když neuspěje, vloží ji na první volné místo od tohoto indexu. Neobsahuje-li seznam žádné volné místo, vloží položku na konec seznamu. |
|
List List.remove(index) - vymaže položku na daném indexu |
|
List List.add(Array arr) - přidá prvky pole arr do seznamu tam, kde je na ně místo |
|
List List.filter(Function fn, object context, [Array arg]) - spustí funkci fn na každý prvek seznamu. Pokud funkce vrátí true, prvek v seznamu ponechá, jinak ho vymaže. |
|
List List.undo([int steps = 1]) - zruší zadaný počet operací. Vracet lze operace insert, remove, add a filter, operaci apply vrátit nelze. |
|
List List.apply(Function fn, object context, [Array arg]) - aplikuje funkci fn na každý prvek pole, pole se touto operací změní. Na tuto operaci nelze použít undo. |
Update: Ještě jsem zapoměl podotknout že operace nad seznamem se dají zřetězit (
myList.insert(1).insert(2).get() ), to mají frikulíni rádi.Můžete si stáhnout aktuální verzi list.js (0.0.1), demo a silně nedodělaný unit test pro jUnit.
Je to verze 0.0.1 takže tam bude určitě spousta bugů tak mě nekamenujte, varoval jsem vás.
A teď něco úplně jiného: básnička!.
Tento článek byl přidán 22.08 2007
Dva komentáře k článku “Moje nová hračka - List”
“silně nedodělaný unit test pro jUnit”:-) To je. Já vidím pod tím odkazem jen 404ku. Nebyl by tam někde? Docela by mě zajímal. Díky.
Ale jo, už jsem to spravil - asi jsem to tam dával pod vlivem, protože nejen že tam byl špatně filename ale ještě navíc tam byl test od něčeho úplně jinýho.
Pokud neznáš jUnit, může se ti hodit i odkaz přímo na testRunner.