Methods name reusable work and return a value to the caller.

method A method groups statements behind a name and can receive arguments.

Methods

side
methods.rb
Replay: real traced execution (multi-file project)
def square(value)
  value * value
end

side = 5
area = square(side)

puts "side=#{side}"
puts "area=#{area}"
def square(value)
  value * value
end

side = 3
area = square(side)

puts "side=#{side}"
puts "area=#{area}"
def square(value)
  value * value
end

side = 8
area = square(side)

puts "side=#{side}"
puts "area=#{area}"
  1. side ← 5

    5side→ 5 = 5  #@side=3, 86area = square(side5)
  2. def square(value)

    1def square(value5)2  value5 * value3end
  3. area ← 25

    5side = 5  #@side=3, 86area→ 25 = square(side5)78puts "side=#{side5}"9puts "area=#{area25}"
    outputside=5
    area=25
  1. side ← 3

    5side→ 3 = 36area = square(side3)
  2. def square(value)

    1def square(value3)2  value3 * value3end
  3. area ← 9

    5side = 36area→ 9 = square(side3)78puts "side=#{side3}"9puts "area=#{area9}"
    outputside=3
    area=9
  1. side ← 8

    5side→ 8 = 86area = square(side8)
  2. def square(value)

    1def square(value8)2  value8 * value3end
  3. area ← 64

    5side = 86area→ 64 = square(side8)78puts "side=#{side8}"9puts "area=#{area64}"
    outputside=8
    area=64

Follow the Method Call

  1. side starts at 5.
  2. square(side) sends 5 into the method.
  3. The method returns 5 * 5.
  4. area becomes 25.
  5. The program prints side=5 and area=25. | side | square result | | --- | --- | | 3 | 9 | | 5 | 25 | | 8 | 64 |

Exercise: methods.rb

Reproduce area=25 for side 5, then try side 3 and 8 and predict each area before running it.