view 1-Ruby/arrays.rb @ 103:98be775c533c default tip

An odd "non-determinism" example from StackOverflow It is clever, but doesn't make much sense as to how it gets its results
author IBBoard <dev@ibboard.co.uk>
date Sun, 14 Jul 2019 13:44:13 +0100
parents 8d46064c9afc
children
line wrap: on
line source

#! /usr/bin/env ruby

animals = ['lions', 'tigers', 'bears']

# Default "puts" for array is one element per line
puts animals

puts "Accessing undefined indexes gives nil" if animals[10] == nil
puts "Negative indexes also work (like Python): -1 =  #{animals[-1]}"
puts "And you get slices/ranges: 1..2 = #{animals[1..2]}"
puts "1..2 is even an object: #{(1..2).class}"
puts "and indexers are methods: [1].methods.include?(:[]) = #{[1].methods.include?(:[])}"
# Note: we're using v1.9+ syntax - previously it was "….include?('[]')"
puts "as is assignment to an array! [1].methods.include?(:[]=) = #{[1].methods.include?(:[]=)}"
puts ""
puts "All funky non-ASCII methods for arrays:"
[].methods.each do |method| 
	if method !~ /[a-z]/
		puts method
	end
end

puts ""
puts "Arrays are also stacks with push() and pop() methods!"