2

我想我对 Scheme 如何处理用户输入感到困惑。我只想从控制台读取用户在脚本运行时输入的一些值。例如,如果我想将用户的值添加到 3,我的印象是我可以使用:

(+ 3 (read))

我还可以将它包含在显示函数中以查看输出。这是我所期望的,但是当我尝试这样做时,它只等待控制台中的下一个代码。我正在尝试 biwascheme.org 和 ideone.com 作为口译员。

因此,我希望找到强制控制台等待用户输入然后将其放入(读取)位置的非常基本的方法。如何?

4

2 回答 2

2

您需要使用实际支持从标准输入读取的运行时。大多数基于 Web 的运行时可能不支持这一点(尽管 Ideone 似乎允许您提前指定标准输入内容(不是交互方式),请参见示例)。

您应该安装Racket。DrRacket 程序实际上会在read调用时给你一个很好的提示。

于 2013-04-22T03:40:52.503 回答
1

我发现repl.it 的 biwascheme 在线编程环境确实支持使用该函数读取用户输入(read),尽管它似乎没有记录在biwascheme 参考中

例如,在 repl.it 上的 Scheme repl 中,在左侧键入:

(define (user-says-y)
  (eq? (read) 'y))

(define (take-user-input)
  (if (user-says-y)
      (print "entered y!")
      (print "did not enter y!")))

保存,运行,然后从右侧的终端调用该函数:

> (take-user-input)

如果您输入y,您将看到该entered y!消息,如果您输入,n您将看到该did not enter y!消息。

魔法。

于 2017-08-23T11:32:06.663 回答