Hlavní navigace

Názor k článku Konstrukce pro řízení běhu programu v jazyce Go (dokončení) od jetset - Defer se mi moc libi. Hodne casto by...

  • Článek je starý, nové názory již nelze přidávat.
  • 3. 1. 2019 0:28

    jetset (neregistrovaný)

    Defer se mi moc libi. Hodne casto by se mi hodil v C ve funkcich co otviraji vic files a pokud nektery nejde otevrit, musi se zavrit vsechny uz otevrene a vyskocit.
    neco na zpusob (zjednodusene)

    a=fopen("input")
    if (!a) return;
    b=fopen("output")
    if (!b) { close(a); return}
    c=fopen("tmp")
    if (!c) {close(b); close(a); return}
    ...
    close(c)
    close(b)
    close(a)
    return

    s deferem by to tudiz slo napsat podstatne jednoduseji

    a=fopen("input");
    if (!a) return
    defer close(a)
    b=fopen("output");
    if (!b) return
    defer close(b)
    c=fopen("tmp");
    if (c)
    {
    ...
    close(c)
    }
    return

    Urcite se najde nekdo, kdo by to dokazal udelat s obskurnima konstrukcema typu try-finally a podobne, ale kdyz se zrovna tohle ve skole probiralo, to uz jsem tam asi 20 let nechodil :-) Spis je vetsi problem v tom, ze musim psat kod prelozitelny 15 let starym kompilatorem :-(