Your SlideShare is downloading. ×
0
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Introduction au langage Ruby
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Introduction au langage Ruby

828

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
828
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide





  • Lancer irb


  • require «blocks»


  • require «vcr»
  • b = Builder::XmlMarkup.new

  • require ‘extensions

  • require ‘tracing’
  • require ‘module_tracing’


  • require ‘duck_typing’
  • exemple geolocalisation
    require ‘mixins’





  • Transcript

    • 1. Ruby is designed to make programmers happy Matz (Yukihiro Matsumoto)
    • 2. Perl + Python Ruby = Smalltalk
    • 3. Interprété
    • 4. Interprété Introspection eval() REPL
    • 5. Orienté Objet (Totalement)
    • 6. Blocks
    • 7. Blocks [1,2,3].each do |item| puts item end file_contents = open(file_name) { |f| f.read } widget.on_button_press { puts "Got Button Press" }
    • 8. Blocks def execute_n_times(times) (0...times).each do yield end end def execute_n_times_with_args(times, &block) (0...times).each do |time| block.call(time) end end
    • 9. messages != méthodes
    • 10. messages != méthodes foo = "Bar" foo.length # Send :length to foo foo.index("a") # Send :index to foo with argument "a" 1+2 # Send :+ to object 1 with argument 2 a = Array.new a[i] # Send :[] to a with argument i
    • 11. messages != méthodes class VCR def initialize @messages = [] end # Captures everything def method_missing(method, *args, &block) @messages << [method, args, block] end # Replays all captured messages def play_back_to(obj) @messages.each do |method, args, block| obj.send(method, *args, &block) end end end
    • 12. messages != méthodes Remote proxies Auto loaders Decorators Mock Objects Builders
    • 13. Dynamique
    • 14. Dynamique Modifier des classes existantes class Integer def even? (self % 2) == 0 end end class String def url_friendly self.downcase.gsub(/.../,'-').gsub(/-{2,}/,'-') end end
    • 15. Dynamique Méthodes singletons class Dog end a_dog = Dog.new anoher_dog = Dog.new def a_dog.bark "Waff Waff" end a_dog.bark # => "Waff Waff" another_dog.bark # => NoMethodError
    • 16. Dynamique Hooks class Tracing def self.method_added(name) puts "Method #{name} added to #{self.name} class." end def new_method # Yada yada yada end end
    • 17. Dynamique Code Eval class Module def trace_attr(sym) self.module_eval %{ def #{sym} printf "Accessing %s with value %sn", "#{sym}", @#{sym}.inspect @#{sym} end } end end class Dog trace_attr :name def initialize(dog_name) @name = dog_name end end Dog.new("Fido").name # => Accessing name with value "Fido"
    • 18. When I see a bird - that walks like a duck - and swims like a duck - and quacks like a duck, I call that bird a duck. James Whitcomb Riley
    • 19. Pas besoin dʼinterface ! class Duck def talk; puts "Quack"; end end class DuckLikeObject def talk; puts "Kwak"; end end flock = [ Duck.new, DuckLikeObject.new ] flock.each do |d| d.talk end
    • 20. DSL
    • 21. DSL (Rake) desc "Clean active targets" task :clean do # ... end desc "Build the project" task :build => :clean do # ... end task :default => :build
    • 22. desc "Clean active targets" task :clean do # ... end desc "Build the project" task :build => :clean do # ... end task :default => :build def desc(description) # ... end def task(*args, &block) # ... block.call end
    • 23. Have Fun !
    • 24. http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ Vous êtes libres de reproduire, distribuer et communiquer cette création au public, ainsi que de modifier cette création Paternité. Vous devez citer le nom de l'auteur original de la manière indiquée par l'auteur de l'oeuvre ou le titulaire des droits qui vous confère cette autorisation (mais pas d'une manière qui suggérerait qu'ils vous soutiennent ou approuvent votre utilisation de l'oeuvre). Pas d'Utilisation Commerciale.Vous n'avez pas le droit d'utiliser cette création à des fins commerciales. Partage des Conditions Initiales à l'Identique. Si vous modifiez, transformez ou adaptez cette création, vous n'avez le droit de distribuer la création qui en résulte que sous un contrat identique à celui-ci.

    ×