Nomes novos para coisas antigas
Ruby usa nomes especiais para coisas que nós já conhecemos. Por exemplo, ele usa a palavra Float para dizer "decimais". Aqui estão mais definições:
- Objeto: É apenas uma peça de
informação.Como o número 3 ou o texto"hello".
- Classe: Ruby separa tudo em classes. Como inteiros,
decimais e strings.
-
Método: Estas são as coisas que você pode
fazer com o objeto. Por exemplo, você pode adicionar inteiros
depois, com mais um método.
Você está pronto para rever três classes de coisas que sabemos:
| Nome antigo | Nome Ruby |
|---|---|
inteiro |
Integer |
decimais |
Float |
texto |
String |
Você também pode ver alguns métodos:
| Classe | Alguns métodos |
|---|---|
Integer |
+ - / * % ** |
Float |
+ - / * % ** |
String |
minúsculas, inverso, tamanho, maiúsculas |
Classes vs objetos
Vamos entender a diferença entre classes e objetos. Um objeto é uma unidade de dados. Uma classe é de qual grupo de dados ele pertence.
Por exemplo, 3 e 5 são números diferentes. Eles não são o mesmo objeto.Mas ambos são inteiros, então pertencem à mesma classe.Aqui estão mais alguns exemplos:
| Objeto | Classe |
|---|---|
| 2 | Integer |
| -5 | Integer |
| 7.2 | Float |
| 3.14 | Float |
| "hello" | String |
| "world" | String |
Notação Class#method
Lembre-se, diferentes classes possuem diferentes métodos. Aqui estão algumas diferenças que voce deve saber.
- - Divisão (/) não trabalha igual com integer (inteiros) e floats (decimais).
- - Adição (+) não trabalha igual com strings (texto) e com integers (inteiros).
- - Strings contém uma variedade de métodos que integers e floats não têm (exemplo: minúsculas, tamanho, maiúsculas, etc).
Por esta razão, nós usamos a notação Class#method para definir exatamente qual método procuramos. Por exemplo, posso dizer Integer#+ para diferenciá-lo de Float#+ e String#+. Eu posso dizer que String#upcase existe, mas Integer#upcase não existe.
Convertendo entre classes
Ruby possui alguns métodos para conversão entre classes:
| Método | Conversão | |
|---|---|---|
| De | Para | |
| String#to_i | string | integer |
| String#to_f | string | float |
| Float#to_i | float | integer |
| Float#to_s | float | string |
| Integer#to_f | integer | float |
| Integer#to_s | integer | string |
Exemplos:
Exercícios
1- Ruby diz a você qual a classe dos objetos. Digite isso no irb:
12.is_a?(Integer) 12.is_a?(Float) 12.is_a?(String) '12'.is_a?(Integer) '12'.is_a?(Float) '12'.is_a?(String) 12.0.is_a?(Integer) 12.0.is_a?(Float) 12.0.is_a?(String) |
Que diferenças você vê?
2- Digite isso:
12 + 12
'12' + '12'
'12'.to_i + 12
'12' + 12.to_s
12 * 12
'12' * 12
|
Obteve os resultados esperados?
3- Como você pode explicar a diferença entre 12, '12' e 12.0 ao seu irmão mais novo?