Ruby: základy práce s polem

Ruby: základy práce s polem
« kdy: 03. 04. 2019, 07:51:50 »
Jaký rozdíl mezi vytvářením pole pomocí Array.new(n, x) a Array.new(n) { x }?

Např. když zkusím toto:


a = Array.new(4, [1, 2, 3])
p a
a[0][0] = "hello"
p a
puts
a = Array.new(4) { [1, 2, 3] }
p a
a[0][0] = "hello"
p a


tak nechápu druhý řádek výstupu:


[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]
[["hello", 2, 3], ["hello", 2, 3], ["hello", 2, 3], ["hello", 2, 3]]



[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]
[["hello", 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]


alex6bbc

  • *****
  • 1 768
Re:Ruby-základy práce s polem
« Odpověď #1 kdy: 03. 04. 2019, 08:11:13 »
To jsou reference, takze menis v druhem pripade furt ten sam objekt/pole.

alex6bbc

  • *****
  • 1 768
Re:Ruby-základy práce s polem
« Odpověď #2 kdy: 03. 04. 2019, 08:12:28 »
V prvnim pripade. Druhy parametr 1,2,3 je pouzit jako zdroj a je referencovan v novem poli.