builtins/kernel_array.rb
tests/_examples/builtins/kernel_array.rb in the metorex repository.
p Array nil
p Array([1, 2])
p Array 3
p Array({a: 1})
class Pair
def to_ary
[1, 2]
end
end
p Array(Pair.new)
class Listed
def to_a
[3, 4]
end
end
p Array(Listed.new)
class PrivatePair
def to_ary
[5, 6]
end
private :to_ary
end
p Array(PrivatePair.new)
class NilAry
def to_ary
nil
end
def to_a
[7, 8]
end
end
p Array(NilAry.new)
class BadAry
def to_ary
"not an array"
end
end
begin
Array(BadAry.new)
rescue TypeError => error
puts error.message
end
class BadToA
def to_a
"not an array"
end
end
begin
Array(BadToA.new)
rescue TypeError => error
puts error.message
end
puts Kernel.private_instance_methods.include?(:Array)
Output:
[]
[1, 2]
[3]
[[:a, 1]]
[1, 2]
[3, 4]
[5, 6]
[7, 8]
can't convert BadAry to Array (BadAry#to_ary gives String)
can't convert BadToA to Array (BadToA#to_a gives String)
true