Why does ruby define a local variable for a, even if the code block does never run?
class Something
attr_reader :a
def call
puts "#{defined?(a)}"
if false
a = 1
end
puts "#{defined?(a)}"
end
end
Something.new.call
# method
# local-variable
I would expect a to be a method throughout call. It seems that ruby detects a potentially assignment and creates the local var. Why?