Мне недавно была поставлена задача создать программу, которая требует, чтобы один из них использовал меню. Тем не менее, я понятия не имею, как создать окно и сделать его отображаемым текстом, с которым можно взаимодействовать с использованием определенного ключа, скажем, «ввести». У кого-нибудь есть намеки на то, как это сделать?Как создать интерактивное меню в схеме
1
A
ответ
1
В отчетах схемы нет поддержки графического интерфейса, поэтому единственным портативным устройством будет интерфейс CLI. Это очень простая программа, в которой есть только эти части.
#!r6rs
(import (rnrs))
(define *stdin* (current-input-port))
(define (readline)
(get-line *stdin*))
;;; displays a textual menu
(define (menu)
(display "Menu\n1. read input\n2. print data\n3. empty input\n"))
;; read until we got the value between 1 and 3 from user
(define (read-command)
(display "Enter choice [1-3] >")
(let* ((in (readline))
(n (string->number in)))
(cond ((<= 1 n 3) n)
(else
(display "Invalid choice \"")
(display in)
(display "\"\n")
(read-command)))))
(define (driver data)
(menu)
(let ((choice (read-command)))
(cond ((= choice 1) (display "Enter text >")
(driver (cons (readline) data)))
((= choice 2) (display "Data:\n")
(display data)
(newline)
(driver data))
(else (display "Emptied\n")
(driver '())))))
(driver '())
Конечно, отдельные реализации имеют поддержку графического интерфейса. Например. У Racket есть способ создать настольные приложения, в которых меню можно нажимать кнопками.