Ruby: Difference between revisions

From Objectif Client Inc
Jump to navigation Jump to search
No edit summary
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Category:Ruby]]
[[Category:Ruby]]
[[Category:Code]]
[[Category:Code]]
== First Step ==
=== Call Ruby command line ===
<pre>irb</pre>


=== Methode ===
==[[Ruby First Step]]==
* Define a methode "m"
==[[Ruby Installation]]==
<pre>def m(name = "World")
==[[Ruby Le Language]]==
puts "Hello Mr #{name.capitalize}!"
==[[Ruby Rail First Step]]==
end</pre>
 
* Execute
<pre>m("nicolas")</pre>
 
<pre>Hello Mr Nicolas!
=> nil</pre>
 
=== Class ===
<pre>
class Greeter
  def initialize(name = "World")
  @name = name
  end
  def say_hi
    puts "Hi #{@name}!"
  end
  def say_bye
    puts "Bye #{@name}, come back soon."
  end
end</pre>
* class define a new class
* @name is a variable d'instance
===Object===
<pre>irb>o = Greeter.new("Nicolas")
=> #<Greeter:0x00000002579a48 @name="Nicolas"></pre>
<pre>irb>o.say_hi
Hi Nicolas!
=> nil</pre>
<pre>irb> o.say_bye
Bye Nicolas, come back soon.
=> nil</pre>
====Methodes of a particular Object====
* Current Object and parent
<pre>irb>Greeter.instance_methods
=> [:say_hi, :say_bye, :m, :nil?, :===, :=~, :!~, :eql?, :hash, :<=>, :class, :singleton_class, :clone, :dup, :initialize_dup, :initialize_clone, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :freeze, :frozen?, :to_s, :inspect, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods, :instance_variables, :instance_variable_get, :instance_variable_set, :instance_variable_defined?, :instance_of?, :kind_of?, :is_a?, :tap, :send, :public_send, :respond_to?, :respond_to_missing?, :extend, :display, :method, :public_method, :define_singleton_method, :object_id, :to_enum, :enum_for, :==, :equal?, :!, :!=, :instance_eval, :instance_exec, :__send__, :__id__]</pre>
* Current Object only
<pre>irb>Greeter.instance_methods(false)
=> [:say_hi, :say_bye]</pre>
 
====Validate Object Methode ====
<pre>irb>o.respond_to?("name")
=> false</pre>
<pre>o.respond_to?("say_hi")
=> true</pre>
<pre>o.respond_to?("to_s")
=> true</pre>
 
====Change Class Attribut====
<pre>irb>class Greeter
attr_accessor :name
end</pre>
 
o = Greeter.new("MySelf")<br>
 
o.respond_to?("name")<br>
 
o.respond_to?("name=")<br>
 
o.say_hi<br>
 
o.name="Betty"<br>
 
o<br>
 
o.name<br>
 
o.say_hi<br>
 
* attr_accessor add tow methods "name" and ""name=""
 
====Create a batch file====
<pre>
#!/usr/bin/env ruby
 
class MegaGreeter
  attr_accessor :names
 
  # Création d'un objet
  def initialize(names = "World")
    @names = names
  end
 
  # Saluer tout le monde
  def say_hi
    if @names.nil?
      puts "..."
    elsif @names.respond_to?("each")
      # @names est une liste de noms : traitons-les uns par uns
      @names.each do |name|
        puts "Hello #{name}!"
      end
    else
      puts "Hello #{@names}!"
    end
  end
 
  # Dire au revoir à tout le monde
  def say_bye
    if @names.nil?
      puts "..."
    elsif @names.respond_to?("join")
      # Grouper les différents noms de la liste par des virgules
      puts "Goodbye #{@names.join(", ")}.  Come back soon!"
    else
      puts "Goodbye #{@names}.  Come back soon!"
    end
  end
 
end
 
 
if __FILE__ == $0
  mg = MegaGreeter.new
  mg.say_hi
  mg.say_bye
 
  # Modifier le nom en Zeke
  mg.names = "Zeke"
  mg.say_hi
  mg.say_bye
 
  # Changer le nom pour un tableau (une liste de noms)
  mg.names = ["Albert", "Brenda", "Charles",
    "Dave", "Engelbert"]
  mg.say_hi
  mg.say_bye
 
  # Maintenant, le nom n'est plus...
  mg.names = nil
  mg.say_hi
  mg.say_bye
end
 
</pre>
 
>ruby helloworl.rb
 
===Structure===
 
====Comment====
 
<pre># This is a comment</pre>
====If====
 
<pre># If null
  if @names.nil?
    puts "..."
  elsif @names.respond_to?("join")
    # Grouper les noms par des virgules
    puts "Goodbye #{@names.join(", ")}.  Come back soon!"
  else
    puts "Goodbye #{@names}.  Come back soon!"
  end
</pre>
 
====Iteration====
<pre>@names.each do |name|
  puts "Hello #{name}!"
end
</pre>
 
 
====Control====
* __FILE__ contains the current file name.
* $0 The name of the used to run the current file
<pre>if __FILE__ == $0</pre>

Latest revision as of 18:59, 13 November 2014