Jump to content

User:Bhanutpt/scratchpad/ruby

From Wikibooks, open books for an open world

Enumerators, Ranges, Arrays and Hashes

[edit | edit source]

Each of these can use the each method for iteration, though they seems to be synonyms, there is lot of difference in computing, The Enumerators and Ranges are almost of fixed memory length and so are memory efficient and fast, whereas Arrays and Hashes involves complex data structures for to be dynamic

Enumerators

[edit | edit source]
5.times.class       # => Enumerator
5.upto(10).class    # => Enumerator
5.upto(10).next     # => 5

Ranges

[edit | edit source]
(0...10).class    # => Range
(0..9).class      # => Range
(1..5).next       # invalid, Range class doesent have next method

Arrays

[edit | edit source]

An array is a collection of elements, by default an array of n elements has its index enumerated from 0 to n-1, i.e, the index to the first element of an array is 0

a = [4,6,7,5]    # simple array decleration 
a.length         # => 4
a.sort           # => [4, 5, 6, 7]
a.sort.reverse   # => [7, 6, 5, 4]
a[0]             # => 4
a[3]             # => 5
a[4] = 3         # => 3 ;resulting array is [4, 6, 7, 5, 3]
a[10] = 0        # => 0 ;resulting array is [4, 6, 7, 5, 3, nil, nil, nil, nil, nil, 0]
a.length         # => 11

array of ranges are allowed to declare, Object Oriented!

HEX = [(0..9),('A'..'F')]
HEX.each { |x| x.each { |y| print y }}    # outputs, 0123456789ABCDEF

Hashes

[edit | edit source]

Hash is an associative array which is a collections of Keys and it's associated Values

capitals = {                  
:karnataka  => 'Banglore'
:maharastra => 'Mumbai'
}
capitals[:westbengal] = 'Kolkata'     # append a new element
capitals[:karnataka] = 'Bengaluru'    # change an element's association
print '%d%' % 1     # is valid, => 1%
print '%d% ' % 1    # is invalid


Ruby 1.9.2 Version is used for the examples on Win Intel x86 / Linux AMD64 Platforms