Решение на Text Info от Биляна Добрева
Обратно към всички решения
Към профила на Биляна Добрева
Резултати
- 15 точки от тестове
- 0 бонус точки
- 15 точки общо
- 15 успешни тест(а)
- 0 неуспешни тест(а)
Код
Лог от изпълнението
Compiling solution v0.1.0 (file:///tmp/d20171026-5817-1avxadb/solution)
Finished dev [unoptimized + debuginfo] target(s) in 3.43 secs
Running target/debug/deps/solution-f5dd4e94aa395cae
running 1 test
test tests::it_works ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Running target/debug/deps/solution_test-c3b431457e2a7a27
running 15 tests
test solution_test::test_alpha_count ... ok
test solution_test::test_alpha_count_2 ... ok
test solution_test::test_char_count ... ok
test solution_test::test_cyrillic_letter_count ... ok
test solution_test::test_emotions ... ok
test solution_test::test_emotions_repeated_punctuation ... ok
test solution_test::test_empty_string ... ok
test solution_test::test_latin_letter_count ... ok
test solution_test::test_sentence_count ... ok
test solution_test::test_sentence_count_2 ... ok
test solution_test::test_triple_dots_count ... ok
test solution_test::test_unicode_char_count ... ok
test solution_test::test_word_count ... ok
test solution_test::test_word_count_2 ... ok
test solution_test::test_word_count_3 ... ok
test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Doc-tests solution
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
История (1 версия и 1 коментар)
Биляна качи първо решение на 25.10.2017 00:59 (преди почти 8 години)
Този метод (и методите по-надолу) може да се пренапише да е доста по-кратък и по-чист. Като за начало, не би трябвало да имаш нужда от
if self.s == ""
, предвид, че започваш отi
равно на 0, и ако нямаш символи, просто ще го върнеш без промяна.Не е нужно и да вземаш reference към
(&self.s)
, когато му викашchars
метода. Да, технически погледнато този метод е дефиниран на&str
, но rust auto-dereference-ваString
типа и ще викне метода на&str
-то отдолу. Споменавали сме това, ще говорим пак за него по-натам.Не е нужно и да проверяваш
chars.as_str() != ""
. Това работи, но конвертира итератора до низ и прави текстово сравнение, където други методи биха били концептуално доста по-прости. Примерно,while chars.count() > 0
,while !chars.next().is_none()
, или дажеwhile let Some(_) = chars.next()
. Или, както си направила по-долу,for _ in chars
:). А, в конкретния случай, връщането наself.s.chars().count()
би ти решило задачата.Качили сме по-обстоен тест в rust-homework репо-то (https://github.com/fmi/rust-homework/tree/master/01). Ако искаш, изтегли си го, и пробвай да рефакторираш методи, докато тестовете ти минават.