Protótipo de Closures em Java está "feature-complete"  XML
Índice dos Fóruns » Notícias
Autor Mensagem
rufostec
Thread.start()

Membro desde: 24/08/2006 16:02:14
Mensagens: 41
Offline

ainda vou entender com mais carinho as closures, ainda não entendi um uso no meu dia a dia.

Vendo o Mauricio com essa foto malvada ai acho que vou ver o Scala que só ouvir falar rsss

eu não paro de estudar desde os meus 16 anos e to com 30 rsss, já foi tantas linguagens.


Sun Certified Java Programmer 1.4

Responda rápido:
Em toca de paca tatu caminha dentro????
[Email] [MSN]
luistiagos
Forum Spammer
[Avatar]

Membro desde: 10/07/2006 10:37:23
Mensagens: 1590
Offline

hum... ja ate sei do que as proximas edições da javamagazine e mundojava iram falar...




po deveriam colocar ponteiros na linguagem.... sinto falta dos ponteiros...

This message was edited 1 time. Last update was at 11/08/2008 10:20:57




SCJP 1.5
Next Target -> SCJA 1.0
[Email] [MSN]
Ssalgado
JavaChild

Membro desde: 11/04/2005 12:51:05
Mensagens: 141
Localização: Zürich
Offline

luistiagos wrote:
po deveriam colocar ponteiros na linguagem.... sinto falta dos ponteiros...


Curiosidade: Que falta eles te fazem no dia a dia ?
victorwss
Forum Spammer
[Avatar]

Membro desde: 18/12/2007 14:46:00
Mensagens: 1609
Localização: São Paulo - SP
Offline

Ssalgado wrote:
luistiagos wrote:
po deveriam colocar ponteiros na linguagem.... sinto falta dos ponteiros...


Curiosidade: Que falta eles te fazem no dia a dia ?


Acho que ele estava sendo irônico.

Victor Williams Stafusa da Silva

{Bacharel em Ciência da Computação - UFMT} {Especialista em Desenvolvimento Java - CEFET/MT}
{SCJP 6.0 - 19/12/2007 - PASS - 88%} {SCWCD 5 - 17/05/2008 - PASS - 79%} {SCJA - 09/09/2008 - PASS - 96%}
{Próximos: SCJD (encalhado com o projeto), SCBCD (estudando), SCSNI. Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.}


Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.

Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.
[MSN]
fantomas
JavaEvangelist
[Avatar]

Membro desde: 24/04/2008 16:10:55
Mensagens: 491
Localização: Terra (maior parte do tempo)
Offline

É....também achei isso curioso.
Ssalgado
JavaChild

Membro desde: 11/04/2005 12:51:05
Mensagens: 141
Localização: Zürich
Offline

victorwss wrote:
Ssalgado wrote:
luistiagos wrote:
po deveriam colocar ponteiros na linguagem.... sinto falta dos ponteiros...


Curiosidade: Que falta eles te fazem no dia a dia ?


Acho que ele estava sendo irônico.


Se sim, foi mal. hehe

Se não, ainda estou curioso.
**Popeye12345**
Forum Spammer

Membro desde: 30/03/2008 20:56:41
Mensagens: 1293
Offline

Alguém pra falar de ponteiros em Java só pode estar sendo irônico mesmo. rs

unnamed.

there are so many monkeys at guj.
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 12879
Localização: SP
Offline

Uma coisa que seria interessante em closures é se eu pudesse fazer currying também.

Não cheguei a brincar suficientemente com o protótipo final (e olhe que eu estou acompanhando isso desde as primeiras propostas do Gafter), mas eu gostaria de fazer algo semelhante ao que posso fazer no Boost:

onde "boost::bind" é um template que efetua o currying de MyReadHandler, passando a "this" o ponteiro para função-membro "MyClass::MyReadHandler", e então passando os parâmetros a essa função-membro: error e bytes_transferred.

[WWW]
fantomas
JavaEvangelist
[Avatar]

Membro desde: 24/04/2008 16:10:55
Mensagens: 491
Localização: Terra (maior parte do tempo)
Offline

thingol wrote: Uma coisa que seria interessante em closures é se eu pudesse fazer currying também.

Não cheguei a brincar suficientemente com o protótipo final (e olhe que eu estou acompanhando isso desde as primeiras propostas do Gafter), mas eu gostaria de fazer algo semelhante ao que posso fazer no Boost:
view plaincopy to clipboardprint?

1. #include <boost/asio.hpp>
2. ...
3.
4. boost::asio::async_read (socket, boost::asio::buffer (buf, 0, nbytes),
5. boost::bind (&MyClass::MyReadHandler, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));

#include <boost/asio.hpp> ... boost::asio::async_read (socket, boost::asio::buffer (buf, 0, nbytes), boost::bind (&MyClass::MyReadHandler, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));
onde "boost::bind" é um template que efetua o currying de MyReadHandler, passando a "this" o ponteiro para função-membro "MyClass::MyReadHandler", e então passando os parâmetros a essa função-membro: error e bytes_transferred.


????? ??????
**Popeye12345**
Forum Spammer

Membro desde: 30/03/2008 20:56:41
Mensagens: 1293
Offline

fantomas wrote:
thingol wrote: Uma coisa que seria interessante em closures é se eu pudesse fazer currying também.

Não cheguei a brincar suficientemente com o protótipo final (e olhe que eu estou acompanhando isso desde as primeiras propostas do Gafter), mas eu gostaria de fazer algo semelhante ao que posso fazer no Boost:
view plaincopy to clipboardprint?

1. #include <boost/asio.hpp>
2. ...
3.
4. boost::asio::async_read (socket, boost::asio::buffer (buf, 0, nbytes),
5. boost::bind (&MyClass::MyReadHandler, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));

#include <boost/asio.hpp> ... boost::asio::async_read (socket, boost::asio::buffer (buf, 0, nbytes), boost::bind (&MyClass::MyReadHandler, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));
onde "boost::bind" é um template que efetua o currying de MyReadHandler, passando a "this" o ponteiro para função-membro "MyClass::MyReadHandler", e então passando os parâmetros a essa função-membro: error e bytes_transferred.


????? ??????


Tambem não entendi bulhufas. Mas sei que é porque ainda não estamos no nivel Yoda, somos padawans ainda. Quero virar Jedi até o fim do ano, mas Yoda... rs... Tá dificil!

unnamed.

there are so many monkeys at guj.
peczenyj
Moderador
[Avatar]

Membro desde: 26/03/2006 23:25:37
Mensagens: 2185
Offline

No aguardo de um post elucidativo e didático.

http://peczenyj.blogspot.com/

'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.'
TangZero
JavaGuru
[Avatar]

Membro desde: 23/01/2007 16:00:46
Mensagens: 257
Localização: São Paulo
Offline

Sergio Figueras wrote:
fantomas wrote:
thingol wrote: Uma coisa que seria interessante em closures é se eu pudesse fazer currying também.

Não cheguei a brincar suficientemente com o protótipo final (e olhe que eu estou acompanhando isso desde as primeiras propostas do Gafter), mas eu gostaria de fazer algo semelhante ao que posso fazer no Boost:
view plaincopy to clipboardprint?

1. #include <boost/asio.hpp>
2. ...
3.
4. boost::asio::async_read (socket, boost::asio::buffer (buf, 0, nbytes),
5. boost::bind (&MyClass::MyReadHandler, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));

#include <boost/asio.hpp> ... boost::asio::async_read (socket, boost::asio::buffer (buf, 0, nbytes), boost::bind (&MyClass::MyReadHandler, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));
onde "boost::bind" é um template que efetua o currying de MyReadHandler, passando a "this" o ponteiro para função-membro "MyClass::MyReadHandler", e então passando os parâmetros a essa função-membro: error e bytes_transferred.


????? ??????


Tambem não entendi bulhufas. Mas sei que é porque ainda não estamos no nivel Yoda, somos padawans ainda. Quero virar Jedi até o fim do ano, mas Yoda... rs... Tá dificil!


Me senti um merda agora......

TangZero

SCJP 6 e SCWCD 5



[WWW]
renato3110
Forum Spammer
[Avatar]

Membro desde: 16/12/2004 17:09:19
Mensagens: 1706
Localização: Rio de Janeiro - RJ
Offline

peczenyj wrote:Isso eu achei interessante:



Sem o @Shared eu recebo um warning, nada mais do que justo!


Deveria ser o contrário, com o @Shared: Warning: too many gambiarras

This message was edited 1 time. Last update was at 13/08/2008 22:30:01


Se alguém fotografasse um corpo humano, a partir de um plano elevado, apareceriam várias sombras distintas. Elas são conhecidas como sombras mentais. Dentro delas existe um universo muito além do nosso plano mortal. Existe um tipo de energia que emana como se fosse um vento selvagem. O nome desse vento é Vajra.
[WWW] [ICQ]
victorwss
Forum Spammer
[Avatar]

Membro desde: 18/12/2007 14:46:00
Mensagens: 1609
Localização: São Paulo - SP
Offline

renato3110 wrote:
peczenyj wrote:Isso eu achei interessante:



Sem o @Shared eu recebo um warning, nada mais do que justo!


Deveria ser o contrário, com o @Shared: Warning: too much gambiarras


O Shared é uma gambiarra para permitir que o closure altere o valor da variável local.

CHUTE: ACHO que isso pode ser implementado pelo compilador criando um objeto oculto no método, transformando a variável local em um atributo deste objeto oculto e fazendo tanto o método quanto o closure usar este atributo. Quando o método termina, o objeto contendo o atributo ainda existe no heap, até que o coletor de lixo o descarte.

Quando a variável é final, sem problemas. O compilador faz o mesmo que ele faz atualmente com classes anônimas. Mas quando não é, essa manobra do compilador resolve o problema.

Aliás, isso não serve apenas para closures. Pode ser usado para classes anônimas também, resolvendo o problema do "annoying final".

Daí, aquele erro de compilação de que a variável local deveria ser final se reduziria a uma warning (porque provavelmente o compilador fará algo que faz com que a variável local deixe de ser de fato apenas uma variável local). Daí o @Shared funciona mais ou menos como um @SuppressWarnings para isso.

Edit: BTW closures são reduzidos pelo compilador em classes anônimas que posteriormente são reduzidas a classes internas e por fim a classes normais com visibilidade de pacote.

This message was edited 1 time. Last update was at 11/08/2008 16:35:31


Victor Williams Stafusa da Silva

{Bacharel em Ciência da Computação - UFMT} {Especialista em Desenvolvimento Java - CEFET/MT}
{SCJP 6.0 - 19/12/2007 - PASS - 88%} {SCWCD 5 - 17/05/2008 - PASS - 79%} {SCJA - 09/09/2008 - PASS - 96%}
{Próximos: SCJD (encalhado com o projeto), SCBCD (estudando), SCSNI. Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.}


Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.

Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.
[MSN]
Bruno Laturner
Forum Spammer

Membro desde: 18/02/2008 16:17:53
Mensagens: 1221
Localização: 78050-000, Brazil
Offline

thingol wrote:Uma coisa que seria interessante em closures é se eu pudesse fazer currying também.

Não cheguei a brincar suficientemente com o protótipo final (e olhe que eu estou acompanhando isso desde as primeiras propostas do Gafter), mas eu gostaria de fazer algo semelhante ao que posso fazer no Boost:

onde "boost::bind" é um template que efetua o currying de MyReadHandler, passando a "this" o ponteiro para função-membro "MyClass::MyReadHandler", e então passando os parâmetros a essa função-membro: error e bytes_transferred.

Isso é currying de função ou pré-configuração do objeto?

Currying em Java só no dia que tivermos objetos-Função/Bloco
[Email] [WWW]
 
Índice dos Fóruns » Notícias
Ir para:   
Apoiado e desenvolvido por Caelum Cursos Java - Powered by JForum 2.1.8 © JForum Team