2. The Ruby Language Originally by Yukihiro "Matz" Matsumoto “Ruby is designed for programmer productivity and fun, following the principles of good user interface design. He stresses that systems design needs to emphasize human, rather than computer, needs.” http://en.wikipedia.org/wiki/Ruby_(programming_language)#History Ruby 1.0 was released in 1996.
3. Ruby Language Overview Dynamically typed Interpreted Can be modified at runtime Object oriented Blocks & lambdas Nice support for Regular Expressions
12. Conditionals: if if age > 17 puts “can vote” end if age > 17 puts “can vote” else puts “attends school” end Statement Modifiers: y = 7 if x == 4 Other Syntax: if x == 4 then y = 7 end
13. Truth Truth: Everything is true except for: false nil Therefore 0 is true “” is true Checking for false: if !(name == “superman”) … if not (name == “superman”) …
14. Unless “unless” provides us with another way of checking if a condition is false: unless superpower == nil status = “superhero” end
15. Case case superhero when “superman” city = “metropolis” when “batman” city = “gotham_city” else city = “central_city” end
16. Case Refactoring city = case superhero when “superman” “metropolis” when “batman” “gotham_city” else “central_city” end
18. Iterators: Conditional Looping “while” allows us to loop through code while a set condition is true x = 1 while x < 10 puts x.to_s + “ iteration” x += 1 end
19. Creating a new array x = [1, 2, 3, 4] => [1, 2, 3, 4] x = %w(1 2 3 4) => [“1”, “2”, “3”, “4”] chef = Array.new(3, “bork”) => [“bork”, “bork”, bork”]
24. Times 5.times{ puts “hello” } 99.times do |beer_num| puts "#{beer_num} bottles of beer” end
25. Each superheroes = [“catwoman”, “batman”, “wonderwoman”] superheroes.each do | s | puts “#{ s } save me!” end wonderwoman save me! batman save me! catwoman save me!
27. Blocks def dos_veces yield yield end dos_veces { puts "Hola” } Hola Hola Yield executes the block This is a Block! {
28. Yield with Parameters def bands yield(“abba”, “who”) end bands do |x,y| puts x,y end abba who Yield sends its parameters as arguments to the block yield(“abba”, ”who”) sends “abba” and “who” to |x, y| x is set to “abba” y is set to “who”
29. Mr. Neighborly's Humble Little Ruby BookJeremy McAnally The Well-Grounded RubyistCovering Ruby 1.9David A. Black Ruby Koansa walk along the path to enlightenmenthttp://github.com/edgecase/ruby_koans
Notes de l'éditeur
Conditionals are key to being able to make decisions in a programleft looks like every other languageparentheses are optional in ruby make sure to do ==, = is an assignment, == is a conditional testExplain putsright is a little different…people in ruby don’t like to type…english readableA statement modifier lets you move control structures at the end of an expression.
Unlike some languages with the 0 and empty string! Binds more tightly than than the “not” keyword so you do need parentheses for example 1, but don’t need parentheses for example 2
Unless can be awkward, especially with else. Usually you’ll want to use if for conditionals with else clauses.Occasionally unless is more readable:unless something is nil
Alot of the time you will be using an array when you iterate over somethingAn array is just a list of items.Every spot in the list acts like a variable and you can make each spot point to a different objectW means wordsArray is a class, needs to start with capital letter
IRBif you go off the array it will be nil
Does anyone know what a hash is? associative array collection of key-value pairskeys can be numbers or strings Difference from an Array
merge takes the value from the second hashmerge! changes h1
you would think that delete should need a bang to change the hash, but delete doesn’t exist with a bangdelete returns the value
5 is an object that is an instance of the integer classtimes is a method of the 5 objecttimes is a method on an object that is an instance of integer
it does the block of code three timesit is very rare that you will see a while loop in ruby...you can do the loops we did earlier, but rubyists will mock you.
What is a block? It is the ability to take a block of code, wrap it up in an object and pass it to a method. Then you can run the block of code within the method any time you want…sometimes twice! The result is kind of like sending a method to a method, except that a block isn’t bound to an object like a method is – it is an object. So what? Why use blocks?elegant syntax for iteratorsBecause there are some things that only blocks can do, like being passed to a method and being returned by a method.