7.1. Pole

7.1.1. Literály, konstanty typu Array
7.1.2. Přidání prvku do pole <<
7.1.3. Metoda each
7.1.4. Nezatříděné poznámky
7.1.5. Třída Array

Vysvětlit/zmínit se co je pole

Pole (Array) je setříděná množina prvků indexovaná celými čísly. Index začínají od 0 a postupují k vyšším číslům. Záporný index je interpretován jako relativní od konce množiny. T.j. index -1 označuje poslední prvek, index -2 pak prvek předposlední, atd.

Než si začneme vykládat o polích, tak si dáme malou ukázku.

# $Id: array-intro.ses,v 1.1 2003/11/19 23:54:35 radek Exp $
[[1,2,3],[4,5,6],[7,8,9]].each {|arr| puts arr.join(',')}
1,2,3
4,5,6
7,8,9
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
$a = [[1,2,3],[4,5,6],[7,8,9]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
(0..2).each do |i|
  (0..2).each do |j|
    print $a[i][j]
  end
  print "\n"
end
123
456
789
0..2

Pole v Ruby ma šírší použití než jaké známe z jazyků jako je C, Pascal. V Ruby používáme pole mimo klasického způsobu také misto seznamů (list) a n-tic (tuple). Vzhledem k častosti svého použití má vlastní syntaxi pro vytváření nových polí. Místo obvyklého

aArray = Array.new

můžeme psát

aArray = []

Prvky pole jsou číslovány celými čísly počínaje nulou. Na první prvek se tedy odkazujeme aArray[0], na druhý aArray[1], a tak dále. Mimo kladné celé čísla a nuly můžeme použít i záporné indexy. Tyto záporné indexy počítají prvky pole od konce s tím rozdílem, že pro poslední prvek je použit index -1. Tedy aArray[-1] je poslední prvek v poli, aArray[-2] je předposlední prvek a tak dále.

Při generování tabulek pro program v C jsem potřeboval tyto pěkně formátovat. Není třeba psát algoritmus na mnoho řádků. S výhodou lze použít metody each_slice, která seskupí prvky pole po skupinách. Poté správnou aplikací join dosáhneme požadovaného efektu.

        puts tabulka.collect{|n| "%3d" % n.to_i} \
        .each_slice(8).collect{ |row| "\t" + row.join(', ') }.join ",\n"
irb(main):007:0> puts (1..19).each_slice(5).collect{|row| "\t" + row.join(', ')}.join ",\n"
	1, 2, 3, 4, 5,
	6, 7, 8, 9, 10,
	11, 12, 13, 14, 15,
	16, 17, 18, 19
=> nil
Licence Creative Commons
Tento dokument Ruby, jehož autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .