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,34,5,67,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]endprint "\n"end1234567890..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