New names for old things
Ruby uses special names for things that we already know. For instance, it
uses the word Float to mean "decimals". Here are more definitions:
Object: That's just any piece of data. Like the number 3
or the string 'hello'.
Class: Ruby separates everything into classes. Like integers,
floats and strings.
Method: These are the things that you can do with an
object. For example, you can add integers together, so +
is a method.
You've already seen thee classes for things that you already know:
| Old name | Ruby class |
| integer |
Integer |
| decimals |
Float |
| text |
String |
You have also seen several methods:
| Class | Some methods |
| Integer |
+ - / * % ** |
| Float |
+ - / * % ** |
| String |
capitalize, reverse, length, upcase
|
Make sure you understand the difference between classes and objects.
An object is a unit of data. A class is what kind of data it is.
For example, 3 and 5 are different numbers. They are not the same object.
But they are both integers, so they belong to the same class. Here are
more examples:
| Object | Class |
| 2 |
Integer
|
| -5 |
Integer
|
| 7.2 |
Float
|
| 3.14 |
Float
|
| 'hello' |
String
|
| 'world' |
String
|
Remember, different classes have different methods. Here are some
differences that you have already seen.
- Division (/) doesn't work the same with integers and
floats.
- Addition (+) doesn't work the same with strings as it does
with integers.
- Strings have several methods that integers and floats don't have
(e.g. capitalize, length, upcase, etc).
For this reason, we will use the notation Class#method to state
exactly which method we mean. For instance, I will say
Integer#+ to differentiate it from Float#+ and
String#+. I can also say that String#upcase exists,
but Integer#upcase does not exist.
Ruby has some methods for converting between classess:
| Method | Converts |
| From | To |
| 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 |
Examples:
Ruby can tell you what class an object is. Type these in
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)
What differences do you see?
Type these in:
12 + 12
'12' + '12'
'12'.to_i + 12
'12' + 12.to_s
12 * 12
'12' * 12
Did you get the results you expected?
How would you explain the difference between
12, '12' and 12.0 to a younger sibbling?
|