как я могу сопоставить данные? - PullRequest
0 голосов
/ 02 декабря 2018

Я хотел бы написать шаблон, который соответствует только одному элементу, например 'a или 'hello, но не что-нибудь еще.Я не думаю, что следующее работает, поскольку оно совпадает во всем (например, (list 1 2 3)), верно?

(define (f x)
  (match x (e (printf "hi~n"))))

1 Ответ

0 голосов
/ 02 декабря 2018

Данные могут использоваться в качестве шаблонов.Вот пример:

#lang racket

(define (f x)
  (match x
    ["hello" "x is hello"]
    [_       "x is not hello"]))

(f "hello")
(f 42)

Результат:

"x is hello"
"x is not hello"

Также, если вы хотите использовать фиксированный символ в качестве шаблона, используйте 'hello, а не просто hello.Первый 'hello соответствует одному символу, но hello является переменной шаблона и соответствует всему.

...