Skip to content

Instantly share code, notes, and snippets.

@mikalai-yankouski
Last active April 17, 2019 14:10
Show Gist options
  • Save mikalai-yankouski/993ca0022fe5f26dd413ef8c485373bc to your computer and use it in GitHub Desktop.
Save mikalai-yankouski/993ca0022fe5f26dd413ef8c485373bc to your computer and use it in GitHub Desktop.
class MyArray
attr_reader :elements
def initialize(*elements)
@elements = elements.flatten
end
def each(&block)
iterate(&block)
end
def map(&block)
result = []
iterate { |e| result << yield(e) }
result #MyArray.new(result).elements
end
def [](k)
elements[k]
end
def []=(k, v)
elements[k] = v
end
def size
elements.count
end
private
def iterate
i = 0
while i < size
yield @elements[i]
i += 1
end
end
end
fake_array = MyArray.new(1,2,3,4,5,6)
fake_array[0] = 99
p fake_array.size
p '*'*50
fake_array.each { |x| p x.to_s }
p '*'*50
p fake_array.map { |x| x ** 2 }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment