Lorsque je révisais le programme d'une certaine classe de programmation, il était recommandé d'implémenter des fonctions appliquées, alors je l'ai essayé. Mise en garde -Ce n'est qu'un exemple d'implémentation! Il existe de nombreuses implémentations plus efficaces et des réponses alternatives. ・ Puisqu'il s'agit d'un programme assez basique, le sens de l'application est différent de votre imagination. C'est une extension qui n'a pas de réponse dans le curriculum.
Collez la partie d'affichage de revue (la partie affichée par les puts) qui a été utilisée à l'avance dans la nouvelle fonction. N'oubliez pas de préparer un argument formel à ce stade et de passer l'argument réel dans show ("hash name") à l'appelant.
review.rb
def show(review)
  line = "------------------------------------"
  puts"Genre:#{review[:genle]}\n#{line}"
  puts"Titre:#{review[:title]}\n#{line}"
  puts"Impressions:\n#{review[:text]}\n#{line}"
  puts"Notation:#{review[:point]}\n#{line}"
end
Tout ce que vous avez à faire est d'ajouter un nouvel élément d'entrée (met) dans la fonction qui publie la révision, d'attendre l'entrée avec gets et d'affecter la valeur d'entrée au hachage. À propos, comme il est nécessaire d'augmenter de nouveau les affichages pour l'affichage des revues, il est plus efficace d'effectuer d'abord le travail de «traitement pour faire de l'affichage une fonction distincte» de *** 1 ***.
review.rb
def write(hairetu)
  post = {}
  puts "Veuillez entrer un genre:"
~~~réduction~~~
  puts "Veuillez noter avec un maximum de 100 points:"
  point = gets.to_i
  while point > 100
    puts"0~Veuillez saisir un nombre de 100"
    point = gets.to_i
  end
  post[:point] = point
~~~réduction~~~
*** (La valeur saisie étant convertie en valeur numérique avec .to_i, n'ajoutez pas ".chomp", faites attention à ne pas ajouter inutilement \ n lors de l'affichage et à ne pas casser la ligne) *** (Cette fois, j'ai ajouté un élément de notation, ce qui est ennuyeux, alors je l'ai écrit comme ça, mais s'il s'agit d'une chaîne de caractères normale, je peux l'écrire de la même manière que les autres éléments.)
En écrivant "&& box.length> 0", vous pouvez empêcher l'appel de la fonction de lecture (fonction de lecture des avis) à moins que le contenu du tableau contenant les avis (hachage) ne soit égal ou supérieur à 0.
review.rb
while true
  puts "Nombre d'avis:#{box.length}"
  puts"[0]J'écris une critique"
  puts"[1]Lire les avis"
  puts"[2]Quittez l'appli"
  if choice==0
~~~réduction~~~
  elsif choice==1 && box.length > 0
    read(box)
~~~réduction~~~
end
review.rb
  puts "Veuillez saisir le numéro de l'avis que vous souhaitez voir:"
  choice = gets.to_i
  while choice > box.length 
    puts "Veuillez saisir le numéro d'un avis existant:"
    choice = gets.to_i
  end
En écrivant de cette manière, vous pouvez configurer une méthode while qui ne cesse de ressaisir la valeur si le nombre entré par l'utilisateur est supérieur au nombre d'éléments dans la zone de tableau. *** Au fait *** Dans cette description, les avis publiés récemment lorsque l'utilisateur entre 0 ou une chaîne de caractères seront affichés. Il existe différentes solutions, mais la plus simple est
review.rb
  if choice == 0
    puts "valeur invalide"
    return 
  else
~~~Traitement après l'instruction while~~~
end
C'est une méthode pour entourer le processus de l'instruction conditionnelle de if. Quand je l'ai essayé, le 0 et la chaîne de caractères sont fermement repoussés. Veuillez noter que si vous mettez des put après le retour, la fonction de lecture se terminera silencieusement. Notez également que si vous n'écrivez pas fermement la partie esle, elle se terminera également en silence.
review.rb
box = []
def write(hairetu)
  post = {}
  puts "Veuillez entrer un genre:"
  post[:genle] = gets.chomp
  puts "Veuillez entrer un titre:"
  post[:title] = gets.chomp
  puts "Veuillez saisir votre impression:"
  post[:text] = gets.chomp
  puts "Veuillez noter avec un maximum de 100 points:"
  point = gets.to_i
  while point > 100
    puts"0~Veuillez saisir un nombre de 100"
    point = gets.to_i
  end
  post[:point] = point
  show(post)
  hairetu << post
  return hairetu
end
def read(box)
  box.each_with_index do |reviews,index|
    index += 1
    puts "#{[index]}:#{reviews[:title]}Examen de"
  end
  puts "Veuillez saisir le numéro de l'avis que vous souhaitez voir:"
  choice = gets.to_i
  if choice == 0
    puts "valeur invalide"
    return 
  else
  while choice > box.length 
    puts "Veuillez saisir le numéro d'un avis existant:"
    choice = gets.to_i
  end
  choice -= 1
  review = box[choice]
  show(review)
end
end
def show(review)
  line = "------------------------------------"
  puts"Genre:#{review[:genle]}\n#{line}"
  puts"Titre:#{review[:title]}\n#{line}"
  puts"Impressions:\n#{review[:text]}\n#{line}"
  puts"Notation:#{review[:point]}\n#{line}"
end
def exit
  exit
end
def error
  puts "valeur invalide"
end
while true
  puts "Nombre d'avis:#{box.length}"
  puts"[0]J'écris une critique"
  puts"[1]Lire les avis"
  puts"[2]Quittez l'appli"
  choice = gets.to_i
  if choice==0
    box = write(box)
  elsif choice==1 && box.length > 0
    read(box)
  elsif choice==2
    exit
  else
    error
  end
end
Pour être honnête, il existe encore de nombreuses possibilités d'erreurs, donc si vous trouvez des défauts, veuillez commenter.
Recommended Posts