Als ich den Lehrplan einer bestimmten Programmierklasse überprüfte, wurde empfohlen, angewandte Funktionen zu implementieren, also habe ich es versucht. Hinweis -Es ist nur ein Implementierungsbeispiel! Es gibt viel effizientere Implementierungen und alternative Antworten. ・ Da es sich um einen relativ einfachen Lehrplan handelt, unterscheidet sich die Bedeutung der Anwendung von Ihrer Vorstellung. Es ist eine Erweiterung, die im Lehrplan keine Antwort hat.
Fügen Sie den zuvor verwendeten Überprüfungsanzeigeteil (den von Puts angezeigten Teil) in die neue Funktion ein. Vergessen Sie nicht, zu diesem Zeitpunkt ein formelles Argument vorzubereiten und das tatsächliche Argument in show ("Hash-Name") beim Aufrufer zu übergeben.
review.rb
def show(review)
line = "------------------------------------"
puts"Genre:#{review[:genle]}\n#{line}"
puts"Titel:#{review[:title]}\n#{line}"
puts"Impressionen:\n#{review[:text]}\n#{line}"
puts"Wertung:#{review[:point]}\n#{line}"
end
Alles, was Sie tun müssen, ist, der Funktion, die die Überprüfung veröffentlicht, ein neues Eingabeelement (Puts) hinzuzufügen, mit get auf Eingabe zu warten und dem Hash den Eingabewert zuzuweisen. Übrigens, da es notwendig ist, Puts für die Überprüfungsanzeige neu zu erhöhen, ist es effizienter, zuerst die "Verarbeitung, um die Anzeige zu einer separaten Funktion zu machen" von *** 1 *** durchzuführen.
review.rb
def write(hairetu)
post = {}
puts "Bitte geben Sie ein Genre ein:"
~~~Kürzung~~~
puts "Bitte bewerten Sie mit maximal 100 Punkten:"
point = gets.to_i
while point > 100
puts"0~Bitte geben Sie eine Zahl von 100 ein"
point = gets.to_i
end
post[:point] = point
~~~Kürzung~~~
*** (Da der eingegebene Wert mit .to_i in einen numerischen Wert konvertiert wird, fügen Sie nicht ".chomp" hinzu. Achten Sie darauf, dass Sie beim Anzeigen nicht unnötig \ n hinzufügen und die Zeile nicht unterbrechen.) *** (Dieses Mal habe ich ein Bewertungselement hinzugefügt, was ärgerlich ist, also habe ich es so geschrieben, aber wenn es eine normale Zeichenkette ist, kann ich es auf die gleiche Weise wie andere Elemente schreiben.)
Durch Schreiben von "&& box.length> 0" können Sie verhindern, dass die Lesefunktion (Funktion zum Lesen von Bewertungen) aufgerufen wird, es sei denn, der Inhalt des Arrays, das die Bewertungen (Hash) enthält, ist 0 oder mehr.
review.rb
while true
puts "Anzahl der Bewertungen:#{box.length}"
puts"[0]Ich schreibe eine Bewertung"
puts"[1]Bewertungen lesen"
puts"[2]Beenden Sie die App"
if choice==0
~~~Kürzung~~~
elsif choice==1 && box.length > 0
read(box)
~~~Kürzung~~~
end
review.rb
puts "Bitte geben Sie die Nummer der Bewertung ein, die Sie sehen möchten:"
choice = gets.to_i
while choice > box.length
puts "Bitte geben Sie die Nummer einer vorhandenen Bewertung ein:"
choice = gets.to_i
end
Wenn Sie auf diese Weise schreiben, können Sie eine while-Methode einrichten, die den Wert immer wieder neu eingibt, wenn die vom Benutzer eingegebene Anzahl größer ist als die Anzahl der Elemente im Array-Feld. *** Apropos *** In dieser Beschreibung werden die Bewertungen angezeigt, die kürzlich veröffentlicht wurden, wenn der Benutzer 0 oder eine Zeichenfolge eingibt. Es gibt verschiedene Lösungen, aber die einfachste ist
review.rb
if choice == 0
puts "Ungültiger Wert"
return
else
~~~Verarbeitung nach der while-Anweisung~~~
end
Es ist eine Methode, um den Prozess mit der bedingten Anweisung von if einzuschließen. Als ich es versuchte, wurden sowohl 0 als auch die Zeichenkette fest abgestoßen. Bitte beachten Sie, dass die Lesefunktion stillschweigend endet, wenn Sie Puts nach der Rückkehr setzen. Bitte beachten Sie auch, dass wenn Sie den Esle-Teil nicht fest schreiben, er auch lautlos endet.
review.rb
box = []
def write(hairetu)
post = {}
puts "Bitte geben Sie ein Genre ein:"
post[:genle] = gets.chomp
puts "Bitte geben Sie einen Titel ein:"
post[:title] = gets.chomp
puts "Bitte geben Sie Ihren Eindruck ein:"
post[:text] = gets.chomp
puts "Bitte bewerten Sie mit maximal 100 Punkten:"
point = gets.to_i
while point > 100
puts"0~Bitte geben Sie eine Zahl von 100 ein"
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]}Überprüfung von"
end
puts "Bitte geben Sie die Nummer der Bewertung ein, die Sie sehen möchten:"
choice = gets.to_i
if choice == 0
puts "Ungültiger Wert"
return
else
while choice > box.length
puts "Bitte geben Sie die Nummer einer vorhandenen Bewertung ein:"
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"Titel:#{review[:title]}\n#{line}"
puts"Impressionen:\n#{review[:text]}\n#{line}"
puts"Wertung:#{review[:point]}\n#{line}"
end
def exit
exit
end
def error
puts "Ungültiger Wert"
end
while true
puts "Anzahl der Bewertungen:#{box.length}"
puts"[0]Ich schreibe eine Bewertung"
puts"[1]Bewertungen lesen"
puts"[2]Beenden Sie die App"
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
Um ehrlich zu sein, gibt es immer noch viele Möglichkeiten für Fehler. Wenn Sie also Fehler finden, kommentieren Sie diese bitte.
Recommended Posts