k47.cz    — každý den dokud se vám to nezačne líbit
foto Praha výběr povídky kultura | twitter FB


Atrox\Arr

18. 6. 2012 — k47 (CC by)

Atrox\Arr je PHP třída inspirovaná frameworkem kolekcí jazyka Scala, která implementuje funkcionální neměnnou kolekci.


Funkcionální a neměnná znamená, že jednou vytvořená instance Arr se nikdy nemůže změnit a každá operace s kolekcí vytvoří novou kopii Arr. Operace, které v PHP mění pole/ArrayAccess offsetSet a offsetUnset skončí výjimkou.

Arr je Scalu inspirovaná natolik, že všechny metody mají stejná jména, přijímají stejné argumenty a mají stejné chování (takže pokud toužíte po dokumentaci: Seq a Map)

Obsahuje kolem stovky metod včetně všech obvyklých funkcí vyšších řádů (map, filter, atd.). Metody, které očekávají kolekci jako argument přijmou všechno přes co se dá iterovat pomocí foreach (pole, Iterator, IteratorAggregate). Pokud to dává smysl, všechny metody zachovávají původní klíče včetně jejich pořadí.

Zajímavá vlastnost opsaná ze Scaly je fakt, že Arr je zároveň funkce. Každá kolekce se chová jako funkce, protože mapuje klíče na hodnoty. To má za následek, že můžete Arr používat všude, kde je očekávána běžná funkce (tady se hodí metoda withDefaultValue, která způsobí, že kolekce bude vracet danou hodnotu i pro neznámé klíče).

Arr můžeme tvořit čtyřmi způsoby:

// z pole:
Arr::from($array)

// ze seznamu hodnot:
Arr::make(1,2,3,4,5)

// zkombinováním klíčů a jejich hodnot
Arr::combine([2,4,6]. ['uno', 'dos', 'tres']);

// nebo jako rozsah
Arr::range(1, 100);

vstoupit do diskuze    sdílet na facebooku, twitteru, google+

štítky: #programování «« »» #obsah «« »» #PHP #Scala

publikováno 18. 6. 2012

příbuzné články:
Operace Tripkodér
Srovnání Scala.xml, Anti-xml a XPath 📷
Pyramid of Smugness: Programming languages edition 📷
Spellcheck
Scala - konverze TupleN na case class 📷
Scala - Booleovská kompozice funkcí 📷

sem odkazují:
Svět se zbláznil

píše k47 & hosté, ascii@k47.cz