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?):

F# interactive na Rocket Dock

Em menos de um segundos ele abriu. Digitei (clique para ampliar):

F# interactive, criando a função

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:

F# interactive, resultado da função

Pronto, resolvido. A premissa estava correta. O erro estava em outro lugar. Podia ter feito assim:

F# interactive, chamando uma função direto no número

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: ,

Comentários


junho 29. 2009 01:48
tucaz
LINQ Pad meu fio!

http://www.linqpad.net/

http://blog.tucaz.net/http://blog.tucaz.net/


junho 29. 2009 01:53
Giovanni Bassi
Ah... não é a mesma coisa. Posso criar objetos inteiros no F# e no Ironruby, tudo no console... e vou vendo o resultado na hora, não preciso clicar em um botão...

http://unplugged.giggio.net/http://unplugged.giggio.net/


junho 29. 2009 02:57
tucaz
Ahhhh! Entao fica criando projeto novo pra testar .ToString() e para de reclamar Tong

Nao eh a mesma coisa, mas eh melhor do que nada e eh Free!

http://blog.tucaz.net/http://blog.tucaz.net/


junho 29. 2009 03:18
Rafael Noronha
Essa console interativa é show mesmo.
Seria bem vinda no C#!

Tucaz,
Interessante esse LINQPad, não conhecia.

http://rafanoronha.net/http://rafanoronha.net/


junho 29. 2009 09:14
Renato
Existe um C# evaluator no Mono da versão 2.2 em diante Smile

em tempo, blog super manero...
falowws

http://rafrancoso.wordpress.com/http://rafrancoso.wordpress.com/


Brazil Leandro
junho 30. 2009 19:56
Leandro
Bom, caso algum "não xiita" se interesse, existe o interactive C# shell (http://www.mono-project.com/CsharpRepl)
É bem legal =D

no site

Comentar


(Vai mostrar seu Gravatar)

  Country flag

biuquote
  • Comentário
  • Pré-visualização
Loading



Quem é Giovanni Bassi

Giovanni Bassi Sou uma pessoa apaixonada por tecnologia e especificamente por .Net. Sou consultor independente especialista em .Net, focado em arquitetura e melhores práticas. Tenho dezenas de artigos publicados na .Net Magazine, revista da qual sou editor técnico. Ministro palestras e cursos de vez em quando, e quando dá tempo eu respiro um pouco. Mais detalhes nesta página.

Busca

Selos

Eu vou ao TechEd Brasil 2010, e você?

MVP

MCPD

MCSD

.Net Magazine

Abaixo ao if!

Calendário

«  julho 2010  »
seteququsedo
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
Ver detalhamento de posts no calendário

Blogs interessantes

    OPMLDownload OPML file

    Postagens recentes

    Comentários recentes

    Disclaimer / Aviso
    As opiniões colocadas neste blog são minhas e pessoais e não expressam necessariamente as opiniões de meus empregadores, pareceiros e amigos. Da mesma forma, os comentários feitos por leitores do blog não expressam a minha opinião.

    © Copyright 2010 .Net Unplugged
    Log in