2016-12-26 19 views
1

Мне недавно была поставлена ​​задача создать программу, которая требует, чтобы один из них использовал меню. Тем не менее, я понятия не имею, как создать окно и сделать его отображаемым текстом, с которым можно взаимодействовать с использованием определенного ключа, скажем, «ввести». У кого-нибудь есть намеки на то, как это сделать?Как создать интерактивное меню в схеме

ответ

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 есть способ создать настольные приложения, в которых меню можно нажимать кнопками.