Middle+
Դուք գիտե՞ք, թե ինչ է դեսուարինգը։
sobes.tech AI
Պատասխան AI-ից
Desugar գործընթացը սինտակտիկ շաքարի (բարձր մակարդակի սինտակտիկ կառուցվածքներ, որոնք հեշտացնում են կոդի գրառումը) վերածնում է ցածր մակարդակի, ավելի primitives կառուցվածքների, որոնք ավելի հեշտ են մշակվում կոմպիլյատոր կամ գործարկման միջավայրի կողմից:
Օրինակներ Android զարգացման մեջ (Java/Kotlin):
-
Lambda արտահայտություններ:
// Սինտակտիկ շաքար: lambda Runnable r = () -> System.out.println("Բարև");Desugar այն վերածում է անանուն դասի:
// Desugar: անանուն դաս Runnable r = new Runnable() { @Override public void run() { System.out.println("Բարև"); } }; -
for-eachցիկլեր:// Սինտակտիկ շաքար: for-each List<String> list = Arrays.asList("a", "b"); for (String s : list) { System.out.println(s); }Desugar այն վերածում է iterator-ով ցիկլի:
// Desugar: iterator-ով ցիկլ List<String> list = Arrays.asList("a", "b"); for (Iterator<String> it = list.iterator(); it.hasNext(); ) { String s = it.next(); System.out.println(s); } -
Kotlin-ի կորուտիններ (ավելի հին իրականացման մեջ):
// Սինտակտիկ շաքար: կանգնեցնող ֆունկցիա suspend fun fetchData(): String { delay(1000) return "Տվյալներ" }Desugar այն վերածում է ավելի ցածր մակարդակի կոդի (օրինակ, վիճակի մեքենա գեներացնելով):
Desugar-ի կարևորությունը:
- Ինքնուրույն օգտագործել ավելի արտահայտիչ և կարճ կառուցվածքներ (շաքար) առանց կոմպիլյատոր/ռունտայմի իրականացումը բարդացնելու:
- Գերանցած համատեղելիություն ապահովել, քանի որ desugar-ված կոդը կարող է գործարկվել հին տարբերակների վրա:
- Կոդի վերլուծություն և օպտիմալացում հեշտացնել:
Android-ում desugar ակտիվորեն օգտագործվում է JVM/ART և կառուցման գործիքներում (օրինակ, D8/R8):