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