Basic Data Types
Ruby has four basic data types: numbers (integers and floats), strings, symbols and Booleans (true, false and nil).
Numbers
# Addition
1 + 1   #=> 2
# Subtraction
2 - 1   #=> 1
# Multiplication
2 * 2   #=> 4
# Division
10 / 5  #=> 2
# Exponent
2 ** 2  #=> 4
3 ** 4  #=> 81
# Modulus (find the remainder of division)
8 % 2   #=> 0  (8 / 2 = 4; no remainder)
10 % 4  #=> 2  (10 / 4 = 2 with a remainder of 2)
There are two types of numbers in Ruby, integers and floats. Integers represent a whole number, and floats are numbers with a decimal point.
When doing arithmetic with integers, the result will always be a integer.
17 / 5    #=> 3, not 3.4
To convert the result, simply replace one of the integers on the expression with a float.
17 / 5.0  #=> 3.4
Converting Number Types
# To convert an integer to a float:
13.to_f   #=> 13.0
# To convert a float to an integer:
13.0.to_i #=> 13
13.9.to_i #=> 13
Useful Number Methods
#even?
8.even? #=> true
5.even? #=> false
#odd?
4.odd? #=> false
9.odd? #=> true
Strings
Concatenation
# With the plus operator:
"Hello " + "beautiful " + "World!"    #=> "Hello beautiful World!"
# With the shovel operator:
"Hello " << "beautiful " << "World!"  #=> "Hello beautiful World!"
# With the concat method:
"Hello ".concat("beautiful ").concat("World!")  #=> "Hello beautiful World!"
Substrings
"hello"[0]      #=> "h"
"hello"[0..1]   #=> "he"
"hello"[0, 4]   #=> "hell"
"hello"[-1]     #=> "o"
Escape characters
\\  #=> Need a backslash in your string?
\b  #=> Backspace
\r  #=> Carriage return, for those of you that love typewriters
\n  #=> Newline. You'll likely use this one the most.
\s  #=> Space
\t  #=> Tab
\"  #=> Double quotation mark
\'  #=> Single quotation mark
irb(main):001:0> puts "Hello \n\nHello"
Hello
Hello
=> nil
Interpolation
Evaluate a string that contains placeholder variables. Use double quotes so that string interpolation will work!
name = "harukat"
puts "Hello, #{name}" #=> "Hello, harukat"
puts 'Hello, #{name}' #=> "Hello, #{name}"
Common String Methods
#capitalize
"hello".capitalize #=> "Hello"
#include?
"hello".include?("lo")  #=> true
"hello".include?("z")   #=> false
#upcase
"hello".upcase  #=> "HELLO"
#downcase
"Hello".downcase  #=> "hello"
#empty?
"hello".empty?  #=> false
"".empty?       #=> true
#length
"hello".length  #=> 5
#reverse
"hello".reverse  #=> "olleh"
#split
"hello world".split  #=> ["hello", "world"]
"hello".split("")    #=> ["h", "e", "l", "l", "o"]
#strip
" hello, world   ".strip  #=> "hello, world"
More examples
"he77o".sub("7", "l")           #=> "hel7o"
"he77o".gsub("7", "l")          #=> "hello"
"hello".insert(-1, " dude")     #=> "hello dude"
"hello world".delete("l")       #=> "heo word"
"!".prepend("hello, ", "world") #=> "hello, world!"
Converting other objects to strings
Using the to_s method, you can convert pretty much anything to a string. Here are some examples:
2.to_s        #=> "2"
nil.to_s      #=> ""
:symbol.to_s  #=> "symbol"
Symbols
Create a Symbol
To create a symbol, simply put a colon at the beginning of some text:
:my_symbol
Booleans
True and False
true represents something that is true, and false represents something that is false.
Nil
nil represents “nothing”. Everything in Ruby has a return value. When a piece of code doesn’t have anything to return, it will return nil.
Basic Data Structures
Arrays
An array is used to organize information into an ordered list. In Ruby, an array literal is denoted by square brackets [ ].
irb :001 > [1, 2, 3, 4, 5]
=> [1, 2, 3, 4, 5]
Hashes
A hash, sometimes referred to as a dictionary, is a set of key-value pairs. Hash literals are represented with curly braces { }. A key-value pair is an association where a key is assigned a specific value. A hash consists of a key, usually represented by a symbol, that points to a value (denoted using a =>) of any type of data.
irb :001 > {:dog => 'barks'}
=> {:dog => 'barks'}
Variables
How to Name Variables
Always code as if the person who ends up maintaining your code will be a violent psychopath who knows where you live.
# bad
a = 19
string = "John"
# good
age = 19
name = "John"
can_swim = false
Getting Data from a User
One way to get information from the user is to call the gets method. gets stands for "get string".
irb :001 > name = gets
Bob
=> "Bob\n"
The \n at the end is the "newline" character and represents the enter key. We'll use chomp chained to gets to get rid of that.
irb :001 > name = gets.chomp
Bob
=> "Bob"
Variable Scope
Variable Scope and Blocks
Inner scope can access variables initialized in an outer scope, but not vice versa.
# scope.rb 
a = 5 # variable is initialized in the outer scope 
3.times do |n| # method invocation with a block 
    a = 3 # is a accessible here, in an inner scope? 
end 
puts a
Types of Variables
Constant:
MY_CONSTANT = 'I am available throughout your app.'
Global variable:
$var = 'I am also available throughout your app.'
Class variable:
@@instances = 0
Instance variable:
@var = 'I am available throughout the current instance of this class.'
Local variable:
var = 'I must be passed around to cross scope boundaries.'
 

 
    
Top comments (0)