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.