Símbolos em Ruby II
Publicado em Developer
Eita diazinho complicado: festinha da Toquinho-de-gente-mais-linda-e-fofa-do-mundo daqui a pouco e ontem dei uma capotada geral, acho que de cansaço - febre, dor no corpo, mas agora parece que melhorei. Quando a gente excede um pouco o que o corpo pode fazer (sim, nerds sedentários fazem isso também!) ele vai reclamar, não tem jeito.
Mas, agora um pouco mais inteiro, estava lendo um email que o Guaracy Monteiro me enviou, a respeito do meu post sobre símbolos em Ruby aí embaixo.
Uma coisa eu sei: ainda não tenho a desenvoltura para explicar pelo menos que diabos são os símbolos de uma maneira que fique prática para os iniciantes na linguagem e também não os embananem em alguns pontos. Vou ir tentando remendar alguns pontos (obrigado pelas dicas, Guaracy!) mas vou te falar, somente usando os símbolos para pegar um pouco mais da noção sobre eles mesmo.
Mas vamos lá, em relação ao exemplo anterior:
- Não passem uma String ali no método azul?, mesmo que a String seja "azul", pois vai dar erro. O método está esperando um símbolo, não uma String.
- Se quiserem converter um símbolo em String, usem o método to_s e se quiserem converter uma String em um símbolo, usem o método to_sym.
- O símbolo é uma classe diferente de String, então não esperem os mesmos métodos ali a não ser que o convertam em uma String.
- Rodem o exemplo direto na linha de comando, editando um arquivo .rb e executando ruby arquivo.rb. Se vocês rodarem o exemplo no irb, vão ver um monte de Strings a mais que são criadas pelo programa. Só para ter idéia aqui na primeira chamada do ObjectSpace são retornadas 1897 Strings! E em chamadas sucessivas, ele vai incrementando em 295 a cada chamada. Executando o GC.start todas esses objetos são apagados, mas para efeito de deixar a matemática mais simplificada, a linha de comando é mais indicada.
- Se quiserem ver todos os símbolos que foram criados, usem Symbol.all_symbols.
Comentários
Comentários fechados.
Sem nenhum comentário.
Artigos anteriores
- Pull requests em modo raiz - sex, 22 de dezembro de 2023, 09:57:09 -0300
- Qual a idade do seu repositório? - ter, 27 de dezembro de 2022, 12:50:35 -0300
- Utilizando ctags em projetos Rails mais recentes - qui, 24 de junho de 2021, 08:23:43 -0300
- Fazendo o seu projeto brotar - seg, 15 de julho de 2019, 08:57:05 -0300
- Learn Functional Programming with Elixir - sex, 02 de março de 2018, 18:47:13 -0300
- Ambiente mínimo - Driver Driven Development - qua, 23 de agosto de 2017, 15:15:03 -0300
- Ambiente mínimo - repositórios de código - dom, 16 de abril de 2017, 13:02:14 -0300
- Ambiente mínimo - terminal e navegador - dom, 02 de abril de 2017, 21:43:29 -0300
- Utilizando muitas gems no seu projeto? - sáb, 29 de outubro de 2016, 11:57:55 -0200
- Desenvolvedores e inteligência artificial - seg, 11 de julho de 2016, 09:09:38 -0300