<!-- next_step "argv" -->
# Arrays
* An ARRAY is a CONTAINER
* an object that contains other objects
* It's a list of objects
# What makes an array an array
* You can put any objects inside it
* In any order
* They stay in order
* Duplicates are fine
# Creating an array
["apple", "banana", "cherry"]
# Array Indexes
* Every slot in the array has a serial number
* You can retrieve any item in an array by its INDEX
* An index is a number from 0 to infinity
* actually to the size of the array
# Array Indexes Exercise
Try this in IRB:
fruits = ["apple", "banana", "cherry"]
fruits[1]
Did you get the result you expected?
Why or why not?
# Start At Zero
When counting,
humans start at one,
but **computers start at zero**.
So the first item in an array is number zero, not number one.
# The End
Try this:
fruits[99]
Did you get the result you expected?
Why or why not?
# Array Methods
fruits.last
fruits.first
fruits.reverse
fruits.shuffle
# Turning an array into a string
fruits.join
fruits.join(" and ")
Note that `to_s` doesn't work right on arrays:
fruits.to_s
puts fruits.to_s
# Looping through an array
fruits.each do |fruit|
puts fruit
end
* `each` is like `while` for arrays
* `fruits.each do` means "for each item inside this array, do this"
* `|fruit|` means "put the current item into a variable named `fruit`"
* `puts fruit` means "print out the value of this variable"
* `end` means "we're done with the loop now" :-)
# Lab: reverse fruit
Given this array:
fruits = ["apple", "banana", "cherry"]
write a program that prints:
yrrehc
ananab
elppa
# Setting items in an array
The `[]` operator works for assignment as well.
fruits[0] = "Apricot"
fruits[1] = "Blueberry"
puts fruits.first
# Checking an array
The `include?` method checks if an object is inside an array or not.
fruits.include? "apple"
true
fruits.include? "pizza"
false
# LAB: enemies list refactoring
I'd like you to **refactor** your old `hello.rb` program to use the `include?` method to check if someone is your enemy.
# TODO: more array labs