7
votes

Le tableau peut-il être réinventé dans RUBY?

Ceci est juste une question hypothétique, si vous n'auriez pas le tableau et la classe Hash , serait-il un moyen de mettre en œuvre une classe de matrice dans Pure Ruby ? Comment?


0 commentaires

4 Réponses :


3
votes

Vous pouvez utiliser une liste liée, qui serait horriblement inefficace, mais possible. Vous pouvez également utiliser un arbre binaire (voir les commentaires ci-dessus).

Je suppose que mon point est: vous ne pouviez pas obtenir un tableau décent sans support de langue inférieur. La structure de base que je suppose est utilisée dans le tableau Ruby est un tableau C (bien que je puisse me tromper). Avec un tel type fondamental, le support de niveau inférieur sera crucial pour des performances décentes n'importe où.


1 commentaires

Je n'y ai pas pensé. Intéressant :)



2
votes

Vous pouvez mettre en œuvre [] dans n'importe quel objet. Par exemple: xxx


1 commentaires

Je sais que, je faisais appelé un tableau en soi.



0
votes

sûr de votre pouvoir. Ruby est une langue Turing-Complete. Vous pouvez mettre en œuvre tout que vous pouvez implémenter dans toute langue dans Ruby.


0 commentaires

10
votes

Oui, nous pouvons!

class MyArray
  include Enumerable

  def initialize
    @size = 0
  end

  def <<(val)
    instance_variable_set("@a#{@size}".to_sym, val)
    @size += 1
  end

  def [](n)
    instance_variable_get("@a#{n}")
  end

  def length
    @size
  end

  def each
    0.upto(@size - 1) { |n| yield self[n] }
  end
end

a = MyArray.new
a << 1
a << 2
p a.to_a     #=> [1,2]


1 commentaires

Je pense que cette solution la plus rubis-esque.