Racket: When и Unless
Обычного if без else в Racket нет, но есть две специальные формы: when и unless, предназначенные для этой цели.
When
(when test-expr body ...+)
Если результат test-expr истина, то вычисляется тело.
(when (positive? -5)
(display "hi"))
(when (positive? 5)
(display "hi")
(display " there"))Unless
То же, что и
(when (not test-expr) body ...+).
Форма unless работает наоборот. Тело вычисляется в том случае, если test-expr – ложь. Использование unless хоть и бывает удобно, но код резко становится нечитаемым, когда в test-expr появляются составные условия.
(unless (positive? 5)
(display "hi"))
(unless (positive? -5)
(display "hi")
(display " there"))Задание
Реализуйте функцию say-boom, которая возвращает строку Boom!, если её вызвали с параметром "go".
(say-boom "hey")
(say-boom "go") ; "Boom!"Racket: When и Unless
Обычного if без else в Racket нет, но есть две специальные формы: when и unless, предназначенные для этой цели.
When
(when test-expr body ...+)
Если результат test-expr истина, то вычисляется тело.
(when (positive? -5)
(display "hi"))
(when (positive? 5)
(display "hi")
(display " there"))Unless
То же, что и
(when (not test-expr) body ...+).
Форма unless работает наоборот. Тело вычисляется в том случае, если test-expr – ложь. Использование unless хоть и бывает удобно, но код резко становится нечитаемым, когда в test-expr появляются составные условия.
(unless (positive? 5)
(display "hi"))
(unless (positive? -5)
(display "hi")
(display " there"))Задание
Реализуйте функцию say-boom, которая возвращает строку Boom!, если её вызвали с параметром "go".
(say-boom "hey")
(say-boom "go") ; "Boom!"Ваше упражнение проверяется по этим тестам
#lang racket
(require (only-in rackunit check-equal? test-begin))
(require "index.rkt")
(test-begin
(check-equal? (say-boom "HOW?") (void))
(check-equal? (say-boom "go") "Boom!"))Решение учителя откроется через:
20:00
