Arrays

What makes an array an array

Creating an array

["apple", "banana", "cherry"]

(square brackets mean "please go create an array object now")

(and put these 3 other objects inside it)

Array Indexes

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?

Nil means none

by returning nil, the computer is answering the question

"What is the 99th item?"

with the answer

"There is no 99th item."

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

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

Remember, here we are sending a message to an array, asking if it includes a certain string.

LAB: enemies list refactoring

Refactoring is changing existing code so that it works the same, but is cleaner and easier to read.

In your old hello.rb program you had an if statement to check if someone is your enemy. Something like:

if name == "darth" or name == "voldemort" or name == "sauron" then

I'd like you to refactor your old hello.rb program to use the include? method to check if someone is your enemy. Is it possible to make that if statement cleaner and easier to read?

TODO: more array labs

 Previous Lesson Next Lesson 

Outline

[menu]

/