Курс по Raku / Приложение 🆕 / Поток и функции / Управление на потока и логика / Exercises / Буквени оценки

Решение: Буквени оценки

Ето едно възможно решение на задачата.

Код

for 95, 82, 71, 58 -> $score {
    my $grade = do given $score {
        when * >= 90 { 'A' }
        when * >= 80 { 'B' }
        when * >= 70 { 'C' }
        when * >= 60 { 'D' }
        default      { 'F' }
    }

    say "$score -> $grade";
}

🦋 Намерете програмата във файла letter-grades.raku.

Изход

95 -> A
82 -> B
71 -> C
58 -> F

Коментари

  1. do given превръща целия given/when в израз, чиято стойност е съвпадналият блок — тук буква за оценка, — и тя се съхранява в $grade.

  2. Всяко when * >= N е сравнение с Whatever срещу темата. Печели първото, което успее, така че за границите е нужна само по една долна граница за всяка.

Навигация в курса

Буквени оценки   |   Знак и четност