1.2 - Ruby, suite


Tableaux

#
## Tableaux
#

tableau = []

tableau = ["james", "mathieu", "lyne", "nicolas"]

tableau = [true, "poutine", 42, [34, 89]]

tableau_2d = [
  [],
  []
]

tableau[0] # Pour acceder et assigner = la valeur
tableau.first # .last
tableau[0..3] # Les Range fonctionnent aussi, donne les items 0, 1, 2, 3
# En plus des operations de suppression, insertion, tri, etc.
# https://docs.ruby-lang.org/en/3.0/Array.html

# Parcourir

for color in ["red", "green", "blue"]
  print(color.capitalize, " ")
end

# On peut exploiter les Blocks pour manipuler les tableaux

["red", "green", "blue"].each do |color|
  print(color.capitalize, " ")
end

# Et combiner les operations
["red", "green", "blue"].select do |color| 
    !color.include?("r")
end
.each do |color|
  print(color.capitalize, " ")
end 

# Il existe une syntaxe alternative pour les blocks
# particulierement utilisee si une seule operation est effectuee
["red", "green", "blue"]
  .select {|color| !color.include?("r")}
  .each {|color| print(color.capitalize, " ")}

Table de hachage

#
##  Table de hachage
#

# Permets d'associer une valeur a une cle pour l'identifier
# https://docs.ruby-lang.org/en/3.1/Hash.html

# On peut utiliser une combinaison variee de type pour les cles ET les valeurs
value = "something"

h = {
    "key" => value,
    2 => "une string",
    :id => 7,
    Object.new => true,
}

# Il existe une notation simplifiée pour utilisé des Symbol comme clé
{symbol: ""}
# equivaut a
{:symbol => ""}

# On peut ajouter une valeur

h[:new_key] = "James"

#
# Recuperer des données
#

# Un item

h["key"] # "something"
         # retourne nil si le cle n'existe pas

h.fetch("other", "some default")

# Et assigner une nouvelle valeur

h["key"] = "something else"

# Toutes les cles/valeurs
# Il existe des raccourcis via .each, .each_key, .each_... pour parcourir avec un Block

h.keys
h.values

# Verifier l'existance

h.key?("patate")
h.value?(42)

💻 Une chaîne de caractères

Créer une fonction qui calcule approximativement le nombre de caractères et de mots dans un texte fourni à la console par l'utilisateur.

  • Valider que l'utilisateur ne saisit pas une string vide ou seulement des espaces.
  • La fonction retourne une variable structurée contenant: text, words et characters
  • Le programme principal affiche le résultat
Votre texte: Je m'appelle James!

'Je m'appelle James!' contient
19 caractères et 3 mots