W
w_a_x_man
[Note: parts of this message were removed to make it a legal post.]
Hey all,
I'm about to introduce Ruby to a group of people that is not familiar to the
language, and the approach i'd like to take is simply by distilling out afew
sample codes. I've been collecting some from around the internet, but i'd
appreciate your suggestions as well.
I'm looking for code snippets that represent some of the beauty of Ruby
actually, such as:
# Simplicity
# Expressiveness
# Productivity
# Flexibility
# Dynamism
# Freedom
# Happiness
Just to clear things up, here are few examples:
# Simplicity
vowels = %w(a e i o u)
alfabet = ('a'..'z').to_a
cons = alfabet - vowels
p cons
# Expressiveness
hello = 'Hello Ruby'
5.times { puts hello }
# Productivity
class Person
# def name
# @name
# end
#
# def name=(other)
# @name = other
# end
#
# def age
# @age
# end
#
# def age=(other)
# @age = other
# end
attr_accessor :name, :age
end
john = Person.new
john.name = 'John'
john.age = 25
p john
# Flexibility
class Array
def pick
self[rand(self.size)]
end
alias :choose ick
end
puts %w(1 2 3 4 5).pick
puts %w(1 2 3 4 5).choose
# Dynamism
Padawan = Class.new
class Jedi
def train(padawan)
def padawan.control_the_force
puts "Now i'm ready to become a Jedi!"
end
end
end
skywalker = Padawan.new
yoda = Jedi.new
p skywalker.respond_to? :control_the_force # => false
yoda.train skywalker
p skywalker.respond_to? :control_the_force # => true
skywalker.control_the_force# => Now i'm ready to become a Jedi!
..and so on.
Any more examples?
Thanks in advance,
Adriano
In comp.lang.lisp, this elisp code was posted as an example
of how to shuffle a vector:
(defun emms-shuffle-vector (vector)
"Shuffle VECTOR."
(let ((i (- (length vector) 1)))
(while (>= i 0)
(let* ((r (random (1+ i)))
(old (aref vector r)))
(aset vector r (aref vector i))
(aset vector i old))
(setq i (- i 1))))
vector)
Ruby:
(9..20).sort_by{ rand }
==>[15, 14, 12, 18, 16, 10, 9, 13, 11, 20, 17, 19]