Confusion on ruby local variables when calling methods and method invocation variables : 
a = 5        # variable is initialized in the outer scope

3.times do |n|
  a = 3      # is a accessible here, in an inner scope?
end

puts a
What is the value of a when it is printed to the screen?

mind you times is a method invocation, there is inner scope created here.

The value of a is 3. This is because a is available to the inner scope created by 3.times do ... end, which allowed the code to re-assign the value of a. In fact, it re-assigned it three times to 3.

why is this different than above?  because we bring in a variable but it doesn't
change the local variable?! maybe because its a method? I don't know? 
But you guys can compare above example with the one below.

a = 5
def adder(num)
  num = 3
end

adder a # 3

puts a # 5

why is a 5 and not 3?  