Sobes.tech
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-each tsü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.