Estava em um cliente semana passada, quando tivemos um problema na formatação de um número. O número não formatava direito quando chamávamos ToString. Tudo parecia certo. Olhamos todo o código umas dez vezes, e não enxergávamos o problema. Mas havia um problema, nós que não estávamos vendo.
A primeira coisa a fazer era verificar a chamada do método ToString, que estava sendo chamado assim:
var texto = numero.ToString("00");
Queríamos uma formatação de um número com dois dígitos, ou seja, "9" virava "09", "2" virava "02", "49" ficava como estava, e por aí vai. Olhe o código acima. Está certo, não é?
Eu pensei "preciso isolar o problema". A melhor maneira seria abrir uma aplicação console simples e digitar o código lá, e imprimir a saída na tela. Aí pensei "Putz, vou ter abrir o outro VS, criar outro projeto, digitar, verificar, etc." Eu sei. É rápido, mas eu estava sem paciência.
Aí me ocorreu algo. Havia uma maneira mais rápida. Saquei meu console interativo de F#, que fica bem facinho no meu RocketDock (quem precisa de um Mac?):
Em menos de um segundos ele abriu. Digitei (clique para ampliar):
Enter. Excelente, agora tenho uma função que recebe um inteiro, e devolve uma string formatada como eu queria.
Basta agora digitar:
f 3;;
E enter! Resultado:
Pronto, resolvido. A premissa estava correta. O erro estava em outro lugar. Podia ter feito assim:
Ainda mais fácil!
Só tem um problema: eu ainda estou aprendendo F#! Não tenho uma super desenvoltura com a linguagem ainda (ainda!). Queria ser capaz de fazer isso com C#, que é algo que o Anders Hejlsberg já mostrou funcionando no PDC passado (vejam aqui o C# Evaluator), mas que não entrou na versão 4 do C#. Seria tão bom… Enquanto isso, não perca tempo, baixe o F# e ganhe o F# interactive. Ou baixe o IronRuby e ganhe o IronRuby Interactive, que faz a mesma coisa.
(Descobrimos depois. A variável numero não era um inteiro, acho que era uma string, ou um object, não me lembro. Foi só converter o tipo e resolvemos o problema.)
Postado na(s) categoria(s)
C#
pelo
giovanni bassi em 29 de junho de 2009 às 01:14
| Tags:
c#,
f#
ba647ed7-8bfc-4374-876e-fd6e6f072982|0|.0