Ruby - metody
Zdravím, mám tu ruby kod, kde clovek skrz vyber z menu dokaze delat ruzny veci, podle toho co si vybere. Vsechno fungovalo dobre dokud sem nenapsal tu metodu ohledne mazani studentu. Od te doby vzdycky kdyz zadavam studenty tak neni mozny z toho cyklu vyskocit, coz moc nechapu, jelikoz predtim to fungovalo. Taky bych potreboval poradit jak predat ty metode delete_student to pole studentu. U toho vypisu to jde, ale tady z nejakeho duvodu ne. Díky moc za radu, podotykam ze v ruby sem zacatecnik
#encoding: UTF-8
# knihovna metod
def enter_name # overeni jmena
name = ""
while (name.length < 3)
name = gets.strip.capitalize
puts "Jméno musí být delší než dva znaky!" if (name.length < 3)
end
return name
end
def get_student # vstup studenta
puts "Zadejte jméno studenta:"
firstname = enter_name
puts "Zadejte příjmení studenta:"
surname = enter_name
return {
"firstname" => firstname,
"surname" => surname
}
end
def ask_continue # overeni pokracovani
puts "Přejete si pokračovat v zadávání? [A/N]"
answ = gets.strip.upcase
if answ == "a"
return true
else
return false
end
end
def print_students(list) # vystup studentu
i = 0
list.each do |student|
i += 1
puts "#{i}. " + student["firstname"] + " " + student["surname"]
end
end
students = []
continue = true
def delete_student(student)
puts "Zadejte číslo studenta, kterého chcete z databáze vymazat:"
i = gets.strip
del_firstname = students[i-1][0]
del_surname = students[i-1][1]
students.delete_at(i-1)
puts "Vymazána položka #{del_firstname} #{del_surname} "
end
# //knihovna metod
a = ""
puts "Vítejte v Zadávani studentu 1.5"
puts "Zadejte číslo od jedné do čtyř\n 1.Zadání studentů\n 2.Mazání studentů\n 3.Výpis studentů\n 4.Konec programu "
until a == "4"
a = gets.strip.to_s
if a =="1"
while continue
new_student = get_student
students << new_student
continue = ask_continue
end
elsif a == "2"
delete_student(students)
elsif a == "3"
print_students(students)
end
end
puts "Děkujeme za použití našeho programu"
toto vyzera podozrivo....
vstup od uzivatela skonvertujes na VELKE znaky a porovnavas s malymi..
cize vzdy to pojde tou else vetvou...