След разглеждане на кода на другите, осъзнах, че имам една грешка, пък и не само аз де :D, при извеждането не трябва да има нито puts, нито return.Извеждането става чрез irb...
Кратък извод от предизвикателството
Тестовете очакват стойност, която се връща от функцията. На практика puts принти стойността на низа в конзолата. Функцията няма нужда от return, защото, дали си написал 'return string', 'string' или просто си оставил на последния ред последната операция, която си извършил със string-а (string.upcase например), функцията винаги ще върне string.
Всъщност, не трябва да има никакво извеждане. "Извеждане" означава да се изпише текст на екрана, така да се каже, или, още по-коректно, да се запишат едни байтове данни в един файлов дескриптор (
STDOUT
).В това конкретно предизвикателство, не искаме да пишете на
STDOUT
, т.е. не искаме нищо да се извежда на екрана. Не искаме да се ползват функциитеputs
илиprint
. Искаме просто вашата функция да върне стойност, а не да я изведе. Върнатата стойност може да се използва от ползвателя на функцията по начин, по който той прецени. Може да си я запише в променлива, да я запише в някаква база данни, или пък нищо да не направи с нея. Може и да я изведе на екрана, но може и да не я изведе.Самата функция не трябва да пише по екрана.
irb
е изключение. То взима стойността, която дадена функция/код връщат и я извежда на екрана, за да я види програмистът. Реално, в нашите тестове не се ползваirb
, тъй като то си е отделен инструмент, следователно никъде не става дума за извеждане.Радвам се, че първото предизвикателство става повод да си говорим за това и да научите тези неща :) Може би ще го споменем и на лекцията.
EDIT: Явор ме изпревари :)
Трябва да сте влезли в системата, за да може да отговаряте на теми.