Todas as variáveis são objetos (abstratos), todos tipos são classes. (nesse exemplo irei trabalhar com o IRB):
- Object: é a classe principal
- Numeric: classe de números;
- Integer: classe de números inteiros;
- Fixnum: números inteiros de precisão fixa, contém 31 bits de comprimento;
- Exemplo básico:
1+1 =>2
- Descobrindo o tipo de dado usando class
(2*6).class
=>Fixnum
- Exemplo básico:
(1234567890).class =>Bignum
- Exemplo básico:
6.66 =>6.66
- Convertendo uma string em Float
"7.123".to_f =>7.123
- Exemplo básico:
"String normal" =>"String normal"
- Bloco de texto:
texto = <<TEXTO aqui escrevo o texto que eu quiser TEXTO =>"aqui escrevo \no texto que eu\n quiser"
- Substrings usando ranges:
texto = "Dieterich" =>"Dieterich" texto[0..2] =>"Die"
- Symbol: Symbol é o objeto mais básico que pode ser criado, seria o nome de variáveis de instância, nomes de métodos, nomes de classes. Semelhante a uma String, é usado como um nome consistente no código, então o objetivo do Symbol, é ter uma performance maior em relação a String, onde símbolos compartilham o mesmo objeto, mas como Símbolos não liberam o espaço em memória diferentemente das Strings, futuramente pode ocorrer um esgotamento de memória. Cada vez que referenciar um mesmo Symbol, é usado o mesmo espaço alocado na memória. Ele é definido como dois pontos ( : );
- Exemplo:
nome = :darlan
=>:darlan
nome.class
=>Symbol
- Exemplo:
vetor = [1,"dois"] =>[1,"dois"]
- Inserindo mais elementos:
vetor.push "mais um"
=>[1,"vetor","mais um"]
- Exemplo:
vetor = {"um"=>"elemento 1",:dois=>"elemento dois"}
=>{"um"=>"elemento 1",:dois=>"elemento dois"}
vetor['um']
=>"elemento 1"
- Exemplo:
er = /^[0-9]/ =>/^[0-9]/ puts "casou" if er =~ '321' =>casou
Conversão de tipos, é uma técnica na qual você 'força' a conversão de algum tipo de dado, transformando por exemplo, um inteiro em uma string.
Método
|
De
|
Para
|
Exemplo
|
to_i
|
String
|
Inteiro
|
"777".to_i => 777
|
to_f
|
String
|
Flutuante
|
"777".to_f => 777.0
|
to_s
|
Inteiro
|
String
|
1.to_s => "1"
|
to_a
|
Range
|
Array
|
(1..4).to_a => [1,2,3,4]
|
to_sym
|
String
|
Simbolo
|
"nome".to_sym => :nome
|
join
|
Array
|
String
|
["vetor",1,"dois"].join(",") => "vetor",1,"dois"
|
Tratamento de exceções
Erros ocorrem as vezes de forma inesperada. Para retornar um erro mais 'limpo' ao usuário final, de forma simplificada, para que entenda o que esta ocorrendo, assim evitando disparar informações sigilosas na tela, e também entender o que esta acontecendo, então precisamos tratar esse código usando tratamentos de exceções.
- Especificando o tipo de exceção. Note que usei um operador matemático (*) para forçar o erro, o rescue é responsável por retornar o erro.
begin string1 = "eu nao sou" string2 = "cauteloso" string1*string2 rescue StandardError => excecao puts "Houve um erro: #{excecao}" end =>Houve um erro: can't convert String into Integer