-
to_a
=> called for explicit conversions
-
to_ary
=> called for implicit conversions
example:
class Coordinates
attr_reader :x, :y
def initialize(x, y)
@x, @y = x, y
end
def to_a
puts "to_a called"
[x, y]
end
def to_ary
puts "to_ary called"
[x, y]
end
end
coordinates = Coordinates.new(5, 7)
puts "splat"
a = *coordinates
# => to_a called
puts "multiple assignment"
x, y = coordinates
# => to_ary called
puts "Implicit conversion into block params"
[coordinates].each { |(x, y)| puts x }
# => to_ary called