Racket: Cond
Для самых сложных случаев, там, где обычно применяется if-else_if, в Racket есть еще одна форма — cond.
(cond
[(positive? -5) "first return"]
[(zero? -5) "second return"]
[(positive? 5) "third return"]
[else "boom!"])Эта форма напоминает case, только в левой части внутри квадратных скобок находится предикат. Если его результат — истина, то выполняется правая часть и её результат возвращается из cond.
Если необходимо, в конце добавляется else, который ведет себя аналогично else в других языках.
Задание
Реализуйте функцию programmer-level, которая принимает на вход количество баллов и возвращает уровень разработчика на основе этого числа. Если баллов от 0 до 10, то это junior, от 10 до 20 – middle, от 20 и выше – senior.
(programmer-level 10) ; "middle"
(programmer-level 0) ; "junior"
(programmer-level 40) ; "senior"Racket: Cond
Для самых сложных случаев, там, где обычно применяется if-else_if, в Racket есть еще одна форма — cond.
(cond
[(positive? -5) "first return"]
[(zero? -5) "second return"]
[(positive? 5) "third return"]
[else "boom!"])Эта форма напоминает case, только в левой части внутри квадратных скобок находится предикат. Если его результат — истина, то выполняется правая часть и её результат возвращается из cond.
Если необходимо, в конце добавляется else, который ведет себя аналогично else в других языках.
Задание
Реализуйте функцию programmer-level, которая принимает на вход количество баллов и возвращает уровень разработчика на основе этого числа. Если баллов от 0 до 10, то это junior, от 10 до 20 – middle, от 20 и выше – senior.
(programmer-level 10) ; "middle"
(programmer-level 0) ; "junior"
(programmer-level 40) ; "senior"Ваше упражнение проверяется по этим тестам
#lang racket
(require (only-in rackunit check-equal? test-begin ))
(require "index.rkt")
(test-begin
(check-equal? (programmer-level 3) "junior")
(check-equal? (programmer-level 18) "middle")
(check-equal? (programmer-level 40) "senior"))Решение учителя откроется через:
20:00
