Bevezetés a Vavr-ba

1. Áttekintés

A Vavr egy nyílt forráskódú, objektum-funkcionális nyelvkiterjesztési könyvtár a Java 8+ rendszerhez. Segít csökkenteni a kód mennyiségét és növelni a robusztusságot.

Ebben a cikkben megismerjük VavrEszköze nevű Bármelyik. Ha többet szeretne megtudni a Vavr könyvtár, ellenőrizze ezt a cikket.

2. Mi az Bármelyik?

Funkcionális programozási világban funkcionális értékek vagy tárgyak nem módosítható (azaz normál formában); a Java terminológiában változhatatlan változók néven ismert.

Bármelyik két lehetséges adattípus értékét képviseli. An Bármelyik vagy a Bal vagy a Jobb. Megállapodás alapján a Bal meghibásodás eredményét jelöli és a Jobb sikert jelent.

3. Maven-függőségek

A következő függőséget kell hozzáadnunk a pom.xml:

 io.vavr vavr 0.9.0 

A legfrissebb verziója Vavr elérhető a Central Maven Repository-ban.

4. Használjon tokokat

Vizsgáljuk meg azt a felhasználási esetet, amikor létre kell hoznunk egy metódust, amely bemenetet vesz fel, és a bemenet alapján visszaadjuk az a -t Húr vagy egy Egész szám.

4.1. Sima Java

Ezt kétféleképpen valósíthatjuk meg. Vagy a módszerünk visszaadhat egy térképet a kulccsal, amely a siker / kudarc eredményét képviseli, vagy rögzített méretet adhat vissza Lista / tömb ahol a pozíció eredménytípust jelöl.

Így nézhet ki:

public static Map computeWITHoutEitherUsingMap (int mark) {Térkép eredményei = új HashMap (); if (jelölés <85) {results.put ("HIBA", "A jelölések nem elfogadhatók"); } else {results.put ("SIKER", jelölések); } visszatérési eredmények; } public static void main (String [] args) {Térkép eredmények = computeWithoutEitherUsingMap (8); String hiba = (Karakterlánc) results.get ("FAILURE"); int jelölések = (int) results.get ("SIKER"); }

A második megközelítéshez a következő kódot használhatjuk:

public static Object [] computeWITHoutEitherUsingArray (int jelölések) {Object [] eredmények = új objektum [2]; if (érdemjegy <85) {results [0] = "A jelölések nem elfogadhatók"; } else {eredmények [1] = jegyek; } visszatérési eredmények; }

Mint láthatjuk, mindkét út meglehetősen sok munkát igényel, és a végeredmény nem túl esztétikus és nem is biztonságos a használata.

4.2. Val vel Bármelyik

Most nézzük meg, hogyan tudjuk hasznosítani Vavr’S Bármelyik hasznosság ugyanazon eredmény elérése érdekében:

privát statikus Vagy kiszámítjaWithEither (int jelek) {if (jelek <85) {return Ether.left ("A jelölések nem elfogadhatók"); } else {return Vagy.jobb (jelek); }} 

Nem, explicit típusú casting, nullellenőrzés vagy fel nem használt objektum létrehozása szükséges.

Ráadásul, Bármelyik nagyon praktikus, monádikus szerű API-t biztosít mindkét eset kezeléséhez:

computeWithEither (80) .right () .filter (...) .map (...) // ...

Egyezményesen, Bármelyik bal attribútum egy hiba esetet képvisel, és a Jobb az egyik sikert jelent. Szükségeink alapján azonban ezt előrejelzésekkel módosíthatjuk - Bármelyik ban ben Vavr felé nem elfogult Bal vagy Jobb.

Ha azt vetítjük Jobb, műveletek, mint szűrő (), térkép () nem lesz hatása, ha Bármelyik volt Bal.

Hozzuk létre például a Jobb vetítés és definiáljon rajta néhány műveletet:

computeWithEither (90) .right () .filter (...) .map (...) .getOrElse (Gyűjtemények :: emptyList);

Ha kiderül, hogy kivetítettük Bal hoz Jobb, azonnal üres listát kapunk.

Kommunikálhatunk a Bal vetítés hasonló módon:

computeWithEither (9) .left () .map (FetchError :: getMsg) .forEach (System.out :: println);

4.3. További jellemzők

Rengeteg van Bármelyik rendelkezésre álló segédprogramok; vessünk egy pillantást néhányukra.

Ellenőrizhetjük, hogy van-e Bármelyik csak tartalmazni Bal vagy Jobb felhasználásával hátra van és igaz mód:

eredmény.isLeft (); eredmény.isRight ();

Ellenőrizhetjük, hogy Bármelyik adottat tartalmaz Jobb érték:

eredmény. tartalmaz (100)

Tudunk hajtogatni Balra és jobbra egy közös típushoz:

Vagy bármelyik = Bármelyik.jobb (42); Karakterlánc eredménye = vagy.hajtsa (i -> i, Object :: toString);

vagy… akár oldalt is cserélhet:

Vagy bármelyik = Bármelyik.jobb (42); Vagy csere = vagy.csere ();

5. Következtetés

Ebben a gyors bemutatóban megtanultuk a Bármelyik hasznossága Vavr’Kerete. További részletek a Bármelyik itt található.

Mint mindig, a teljes forráskód elérhető a GitHubon.