Ruby: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
| Line 146: | Line 146: | ||
>ruby helloworl.rb | >ruby helloworl.rb | ||
===Structure=== | |||
====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> | |||
Revision as of 03:32, 13 November 2014
First Step
Call Ruby command line
irb
Methode
- Define a methode "m"
def m(name = "World")
puts "Hello Mr #{name.capitalize}!"
end
- Execute
m("nicolas")
Hello Mr Nicolas! => nil
Class
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
- class define a new class
- @name is a variable d'instance
Object
irb>o = Greeter.new("Nicolas")
=> #<Greeter:0x00000002579a48 @name="Nicolas">
irb>o.say_hi Hi Nicolas! => nil
irb> o.say_bye Bye Nicolas, come back soon. => nil
Methodes of a particular Object
- Current Object and parent
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__]
- Current Object only
irb>Greeter.instance_methods(false) => [:say_hi, :say_bye]
Validate Object Methode
irb>o.respond_to?("name")
=> false
o.respond_to?("say_hi")
=> true
o.respond_to?("to_s")
=> true
Change Class Attribut
irb>class Greeter attr_accessor :name end
o = Greeter.new("MySelf")
o.respond_to?("name")
o.respond_to?("name=")
o.say_hi
o.name="Betty"
o
o.name
o.say_hi
- attr_accessor add tow methods "name" and ""name=""
Create a batch file
#!/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
>ruby helloworl.rb
Structure
If
# 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
Iteration
@names.each do |name|
puts "Hello #{name}!"
end