Aprenda Ruby – parte III
String
Acho que agora as coisas começam a ficar mais divertidas
Não é minha intenção, ficar explicando cada classe básica do Ruby, acho que mais importante focarmos no conceito da linguagem, acredito que a melhor forma de aprender a programar é praticando, por tanto vou usar alguns exemplos utilizando funcionalidades da String e do Array, para explicar os conceitos e ao mesmo tempo mostrar como é produtivo programar em Ruby.
Para entender os recursos de cada classe, basta olhar a documentação do Ruby que é bem abrangente.
Vamos ver alguns exemplos, de como podemos concatenar valores em uma string:
variavel = "um dois tres" variavel = variavel+" quatro cinco seis" #pode ser assim também variavel = "um dois tres" variavel += " quatro cinco seis" #Também podemos fazer assim variavel = "um dois tres" variavel.concat(" quatro cinco seis") #ou melho ainda, esse é muito maneiro, o código fica claro! variavel = "um dois tres" variavel << " quatro cinco seis" #alem de claro, esse tipo de atribuição é mais rápido.
Viu por que Ruby é agil?
- Até minha mãe entende que com esse simbolo "<<" estou inserindo uma valor na String ![]()
É claro que em java temos outros modos de concatenar valores em uma String, mas provavelmente alguns deles nos obriga a instanciar alguma classe utilitária como o StringBuilder, por exemplo.
Gostou? você ainda não viu nada, olha só que F0D@! :p
Delete
#aqui eu quero remover todas as vogais de uma String "a b c d e f g h i ".delete "aeiou" => "b c d f g h" #podemos utilizar exceções. #vamos remover todas as vogais, exceto a vogal "i" "a b c d e f g h i".delete "aeiou", "^i" => "b c d f g h i"
Quer ver mais?
#Conversão de case
"saga do programador".upcase
=> "SAGA DO PROGRAMADOR"
"SAGA DO PROGRAMADOR".downcase
=>"saga do programador"
#olha só que maneiro:
#veja como esse código é expressivo!
"saga do programador".include? "programador"
=> true
#é esse tipo de coisa q faz a diferença
#quero saber quantos caracteres diferentes existem entre as Strings
"Iuri" <=> "Iure"
=> 1
#agora eu quero tirar caracteres duplicados de uma String
"google".tr_s("o","o")
=> "gogle"
"google".tr_s("o","")
=> ggle
Arrays:
Na boa! Quando comecei a programar, aprendi sobre Arrays com o velho Pascal, achei muito chato. Pelas dificuldades apresentandas para recuperar os dados.
Com a evolução das linguagens as coisas foram melhorando, mas definitivamente trabalhar com Arrays em linguagens dinâmicas, supera as expectativas!
Vamos aos exemplos:
#Criando uma array em Ruby: meuArray = [“um”, “dois”,3] => [“um”,”dois”,3] #Sim é isso mesmo! Eu posso ter tipos diferentes dentro do mesmo Array
Olha com as coisas ficam ainda mais legais, quando nos aproveitamos das facilidades que a linguagem Ruby nos proporciona com o conceito de blocos:
meuArray = Array.new(2) {1} => [1,1]
Alguma vez você imaginou preencher um Array de maneira tão simples, como no exemplo abaixo:
meuArray = Array.new(5) {|n| n+1} => [1,2,3,4,5]
No post anterior eu finalizei com a seguinte pergunta:
Tenho uma String com seguinte valor “um dois tres quatro cinco”, como você faria em uma linguagem chata para transformar essa String em um array contendo cinco itens?
Bom, existe N maneires de fazer isso em N linguagens, meu exemplo de linguagem chata, será em delphi, vamos a roubada rs.. :
//Para facilitar, ao invés de utilizar um Array, vou usar a classe TStringList. Var valor: String; listaValor: TStringList; begin valor := 'um dois tres quatro cinco'; listaValor := TStringList.Create; valor := StringReplace(valor,' ',',',[rfReplaceAll]); listaValor.CommaText := valor; end;
Agora em Ruby:
#Preste atenção como é complexo rs... meuArray = %w(um dois tres quatro cinco) => [“um”,”dois”,”tres”,”quatro”,”cinco”]
Outros exemplos:
#Sim! O operador "<<" também funciona para o Array meuArray = [1] => [1] meuArray << 2 => [1,2]
No incio desse topico sobre arrays, comentei que um dos grandes problemas de trabalhar com Arrays nas linguagens chatas, e a dificuldade para manipular os dados, vamos ver agora uma pequena amostra, das facilidades que o Ruby nos oferece para trabalhar com isso:
meuArray = [1,2,3,4,5] => [1,2,3,4,5] #Retornar só os numero pares, mais uma vez vou me prevalecer do conceito de blocos. arrayPares = meuArray.select{ |valor| valor%2==0 } => [2,4]
Bom, por enquanto é só!
Acho que agora as coisas estão ficando mais com a cara do Ruby, pois deixamos de lado o bla bla e passamos para a pratica, algo mais produtivo, talvez você ainda não tenha notado, mas nesse post conseguimos trabalhar bastante um otimo conceito do Ruby que são os blocos. A intenção daqui para frente é utilizar exemplos de códigos, para expressar os conceitos das funcionalidades que essa maravilhosa linguagem nos proporciona
Até a próxima!
Iuri Menescal
June 29th, 2009 - 00:15
Muito obrigado!
Você respondeu uma dúvida que estava me “matando”.
Abração!