Mais uma semana de desenvolvimento com Flex e ActionScript, mais algumas diferenças para o Java.
- Em ActionScript não é possível sobrecarregar um construtor ou um método, por exemplo, em Java posso fazer isso:
public void pagamento(Date dataPagamento, Double valor) { ... }public void setPagamento(Double valor) { ... }
*Caso se o vencimento for omitido eu possa usar a data atual como data do pagamento.
Em ActionScript dá para fazer assim:
public function pagamento(valor:Number, data:Date=null) : void { ... }
Nesta caso assumo a data com o valor padrão null, tornando o parâmetro opcional. Note, os parâmetros obrigatórios sempre tem que vir primeiro, como o valor.
Agora posso chamar este método assim: instancia.pagamento(100); ou assim: instancia.pagamento(100, new Date(2010, 1, 10));
- No ActionScript também existe algo semelhante ao varargs do Java, chamado de "rest". Posso declara o método como abaixo:
public function pagamento(valor:Number, ... outrosArgumentos) : void { ... }
Neste caso, as reticências declaram um argumento "rest", que é um Array e pode ser iterado no corpo do método. Assim como no Java o argumento rest (varargs no Java) tem que ser o último argumento. No Java é assim:
public void pagamento(Double valor, Object ... outrosArgumentos) { ... }
ou
public void pagamento(Double valor, Date ... datas) { ... }
Neste caso posso chamar este método definindo ou não o segundo argumento (terceiro, quarto...). Note que Java é tipado, ou seja, não há definição de tipo no Runtime como no ActionScript então ele deve fazer parte dos argumentos, diferente do AS.
- No ActionScript as funções são objetos e podem ser atribuídas a uma variável como abaixo:
var pagamento:Function = function (valor:Number) : void { ...}
Também podem ser passadas como parâmetros, como abaixo:
public function fazAlgo(metodo:Function) { ... }
Isto é especialmente útil para delegar ou fazer callbacks, caso dos retornos de chamadas no tratamento de Eventos, como abaixo:
btPagamento.addEventListener(MouseEvent.CLICK, pagamento);
Neste caso, pagamento é uma função. No C# é semelhante. Particularmente acho este método de tratamento de eventos muito melhor que no Java que usa o padrão Observer/Observable para implementar.
Bom, por enquanto é só, escrever ajuda a memorizar.
Nenhum comentário:
Postar um comentário