Middle+
Kas teab, mis on desugaring?
sobes.tech AI
Vastus AI-lt
Desugaring on protsess, kus sünteetiline suhkur (kõrgema taseme süntaktilised konstruktsioonid, mis lihtsustavad koodi kirjutamist) teisendatakse madalama taseme, lihtsamateks konstruktsioonideks, mida on kergem töödelda kompilaatori või täitmise keskkonna poolt.
Näited Androidi arenduses (Java/Kotlin):
-
Lambda avaldised:
// Süntaktiline suhkur: lambda Runnable r = () -> System.out.println("Tere");Seda teisendatakse anonüümseks klassiks:
// Desugarimine: anonüümne klass Runnable r = new Runnable() { @Override public void run() { System.out.println("Tere"); } }; -
for-eachtsüklid:// Süntaktiline suhkur: for-each List<String> list = Arrays.asList("a", "b"); for (String s : list) { System.out.println(s); }Seda teisendatakse iteratoriga tsükliks:
// Desugarimine: tsükkel iteratoriga List<String> list = Arrays.asList("a", "b"); for (Iterator<String> it = list.iterator(); it.hasNext(); ) { String s = it.next(); System.out.println(s); } -
Kotlin korutüünid (varasemad teostused):
// Süntaktiline suhkur: peatav funktsioon suspend fun fetchData(): String { delay(1000) return "Andmed" }Desugarimine (näiteks oleku masina genereerimise kaudu) teisendab selle madalama taseme koodiks.
Desugarerimine on oluline, sest see:
- Võimaldab kasutada väljenduslikumaid ja lühemaid konstruktsioone (suhkur) ilma keeruka kompilaatori/juhtumi tööta.
- Tagab tagasipööratava ühilduvuse, kuna desugaritud kood saab töötada vanematel platvormidel või VM-del.
- Lihtsustab koodi analüüsi ja optimeerimist.
Androidil kasutatakse desugarerimist aktiivselt JVM/ART ja ehitustööriistade (näiteks D8/R8) kaudu.