From: w_a_x_man Date: 2010-10-02T23:25:10+09:00 Subject: Re: The beauty of Ruby through examples On Sep 29, 1:40 pm, Adriano Ferreira wrote: > [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 a few > 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 :pick > 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]