1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

fazendo new do java em progress

Discussão em 'Progress 4GL' iniciado por Roger.cruz, Março 25, 2009.

  1. Roger.cruz

    Roger.cruz Sem Pontuação

    só pra quem tá curioso
    é assim que pretendemos fazer new usando o proof para progress 9
    Código:
    def var minhaInstancia as handle no-undo.
    
    assign minhaInstancia = newInstance("test/Empty.p").
    
    nada oficial
    mas como o projeto é open-source:
    Código:
    function newInstance returns handle
        (input filePath as char):
    
        def var programa as handle no-undo.
        run createInstance(target-procedure, filePath, output programa).
    
        return programa.
    
    end function.
    
    o createInstance faz um run persistent set e adiciona o handle da procedure nova na ttHandles
    que diz quem eh pai de quem (criando uma arvore de dependencias)
    assim quando voce faz um deleteInstance o proof varre a arvore matando 1 por 1
    é quase um garbage collector!

    se voce nao tem o proof apenas substitua a linha do createInstance por um:
    Código:
    run value(filePath) persistent set programa.
    
    ai voce pensa: "quais sao as vantagens de usar newInstance ao inves de run persistent?"
    ei-las:
    - fazer assign de varias variaveis inclusive as do tipo handle ao mesmo tempo.
    - passar uma procedure como parametro sem gerenciar o seu handle.
    - sintaxe mais limpa.

    desvantagens de usar a funcao sem o proof:
    - voce vai ter que dar um delete procedure no seu handle.
    - se passar um newInstance como parametro para determinado metodo/procedure-interna sera gerado um memory-leak.
    (com o proof ele iria limpar a propria caca)

Compartilhe esta Página