Instructions de bases (ruby)

Shebang

Dans tous les scripts il y a une ligne en haut du document qui indique le type d'interpréteur qui doit être chargé au lancement du programme. Voici concernant Ruby :

#!/usr/bin/ruby -w

Avec le type d'encodage :

# -*- coding: utf-8 -*-

Entrées-sorties de base

  • Saisir une donnée :
saisir = gets.chomp
  • Afficher une donnée :
puts "Voici une variable #{saisir}"
  • Récupérer une entrée envoyé à l'application :
saisir = ARGV[0]
  • Tester les paramètres envoyé au programme
if ARGV.length > 0 then
  puts ARGV
end

Manipuler les variables

  • Les intervales
puts 1..10
puts 'a'..'z'
  • Les tableaux :
# Déclaration :
tab = [0 , 2 , -5, 15]
# Ajoute un élément en fin de tableau :
tab << 3
# Afficher un élement du tableau :
puts tab[2]  #=> -5
  • Astuce pour les tableaux :
# Faire la somme d'un tableau :
puts [1,2,3,4].reduce(:+)
# Faire la multiplication d'un tableau :
puts [1,2,3,4].reduce(:*)
  • Tables associatives (Hash) :
#tab = Hash.new()
tab = {'phil' => 'dosch', 'mickey' = > 'mouse'}
puts tab['phil']  # => dosh
 
#tab = {:phil' => 'dosch', :mickey' = > 'mouse'}
#puts tab[:phil]   # => dosh
 
#Ajout d'une valeur:
tab[:nouveau]="ajout"
  • Les symboles :

Ce sont des identificateurs correspondant à une chaine de caractère prédédé de “:”.

:toto
:"variable"

La particularité de cette technique réside sur sa réservation de son espace mémoire. Celle-ci en occupe qu'une seule. (Une forme de pointeur).

  • Cas particuliers de l'affectation de paramètres :
a, b = 2, 7, 8, 1     #=> a = 2, b = 7
a, *b = 2, 7, 8, 1     #=>  a = 2 , b = [7 , 8 , 1]

Dans certains cas, pas toutes les valeurs sont pris en compte.

Structure de contrôle

  • Les conditions
x = true
if x then
  puts "x est vraie ?"
elsif x.is_s? then
  puts "x est chaine ?"
else
  puts "x donc autre chose ?"
end
  • Le contraire de If :
unless a < 25
b = 0
else
b = 1
end
  • Semblable au switch
option = 3
case option
when 1.5 then
     puts "Mon chois s'est porté entre 1 et 5"
when "erreur": 
     puts "Mon choix s'est porté sur une erreur"
when /p \ s +(\ w +) /
     puts "Mon choix s'est porté sur une regex"
else
     puts "Il se peut que je n'ai pas apporté de choix en fait ?"
end
  • While
while a > 5
puts a
a -= 1
end
  • Les itérateurs / for
# Avec un tableau 
for i in ['hello', 'bonjour', 'guten tag']
  puts i, " "
end
 
# Avec une intervalle
for i in 1..500
  puts i," "
end
 
# Avec Times :
5.times do |i|
  next if i == 1
  puts i
end
 
3.times { puts "hello" }
 
1.upto(3) { |x| puts "hello : #{x} " }
 
do i in [1,3,5,7,9]
     puts i
end
 
[1,3,5,7,9].each { [i| puts i }

Les fonctions

  • Déclarer une fonction
def ma_fonction(arg, *tab)
   puts arg
   puts tab
end
 
ma_fonction(1)
#> 1
#> []
 
ma_fonction(1,2,3,4)
#> 1
#> [2,3,4]

Quelques opérateurs et méthodes

  • Même type et de même valeur ?
1.eql?(1.0) #=> true ?
  • Du même objet
chaine.equal?"une phrase"
  • Tester si une variable est défini :
defined?chaine  #=> nil ou local-variable