_  _   ,_
/^\/^\-/ @D
~(________/ PERL.LT
|L |L
L L
Straipsniai  Funkcijos 
Funkcijos/tie - priskirti kintamąjį obejktų klasei
  • tie VARIABLE,CLASSNAME,LIST

    Ši funkcija pririša kintąmąjį prie paketo klasės, kuris leis realizuoti kintamąjį. VARIABLE yra kintamojo vardas, kuriuo jis bus iškviečiamas. CLASSNAME yra klasės, realizuojančios teisingo tipo objektus, vardas. Bet kokie papildomi argumentai yra perduodami new klasės metodui (t.y. TIESCALAR , TIEHANDLE , TIEARRAY ar TIEHASH ). Paprastai tai yra argumentai, kurie gali būti perduodami dbm_open() C funkcijai. Objektas, gražintas new metodo taip pat gražinamas tie funkcijos, kuri galėtų būti naudinga, norint prieiti prie kitų CLASSNAME metodų.

    Įsidėmėkite, kad funkcijos kaip kad keys ir values gali gražinti milžinišką sąrašą, kai panaudotos dideliems objektams, kaip kad DBM failai. Jums gali labiau norėtis naudoti each funkcija, atlikti iteraciją per tokius objektus. Pavyzdys:

        # print out history file offsets
        use NDBM_File;
        tie(%HIST, 'NDBM_File', '/usr/lib/news/history', 1, 0);
        while (($key,$val) = each %HIST) {
    	print $key, ' = ', unpack('L',$val), "\n";
        }
        untie(%HIST);

    Klasė, realizuojanti hash'ą, turėtų turėti tokius metodus:

        TIEHASH classname, LIST
        FETCH this, key
        STORE this, key, value
        DELETE this, key
        CLEAR this
        EXISTS this, key
        FIRSTKEY this
        NEXTKEY this, lastkey
        SCALAR this
        DESTROY this
        UNTIE this

    Klasė, realizuojanti eilinį masyvą, turėtų turėti tokius metodus:

        TIEARRAY classname, LIST
        FETCH this, key
        STORE this, key, value
        FETCHSIZE this
        STORESIZE this, count
        CLEAR this
        PUSH this, LIST
        POP this
        SHIFT this
        UNSHIFT this, LIST
        SPLICE this, offset, length, LIST
        EXTEND this, count
        DESTROY this
        UNTIE this

    Klasė, realizuojanti failo valdiklį, turėtų turėti tokius metodus:

        TIEHANDLE classname, LIST
        READ this, scalar, length, offset
        READLINE this
        GETC this
        WRITE this, scalar, length, offset
        PRINT this, LIST
        PRINTF this, format, LIST
        BINMODE this
        EOF this
        FILENO this
        SEEK this, position, whence
        TELL this
        OPEN this, mode, LIST
        CLOSE this
        DESTROY this
        UNTIE this

    Klasė, realizuojanti skaliarą, turėtų turėti tokius metodus:

        TIESCALAR classname, LIST
        FETCH this,
        STORE this, value
        DESTROY this
        UNTIE this

    Ne visi metodai, parodyti viršuj privalo būti realizuoti. Žr. perltie, Tie::Hash, Tie::Array, Tie::Scalar ir Tie::Handle.

    Skirtingai nuo dbmopen, tie funkcija nenaudos ir nereikalaus modulio - reikės pačiam rankiškai susivokti ir juo pateikti. Žr. DB_File arba Config modulį įdomiems tie realizavimams.

    Dėl tolimesnių detalių žr. perltie, tied VARIABLE.

algirdas@perl.lt 2005.04.11 - $dabar