Ceci est juste une question hypothétique, si vous n'auriez pas le tableau code> code> et la classe code> Hash code>, serait-il un moyen de mettre en œuvre une classe de matrice dans Pure Ruby ? Comment? P>
4 Réponses :
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). P>
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ù. P>
Je n'y ai pas pensé. Intéressant :)
Vous pouvez mettre en œuvre [] dans n'importe quel objet. Par exemple:
Je sais que, je faisais appelé un tableau en soi.
sûr de votre pouvoir. Ruby est une langue Turing-Complete. Vous pouvez mettre en œuvre tout em> que vous pouvez implémenter dans toute langue em> dans Ruby. P>
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]
Je pense que cette solution la plus rubis-esque.