我是SML语言的新手,我想这样做。
这个答案有三个部分。第一部分回答了你唯一的问题。第二部分回答了你似乎在钓鱼而没有提出的问题,第三部分解决的是如何通过自己的方法找到问题的答案。
如何用SML语言从用户键盘上读取字符串?
你使用 TextIO.inputLine TextIO.stdIn
:
- val wat = TextIO.inputLine TextIO.stdIn;
Hello, World!
val wat = SOME "Hello, World!\n" : string option
请注意,这在我的PolyML REPL中实际上是行不通的(也就是 "顶层 "或 "提示"),但在我的SMLNJ和Moscow ML REPL中是行得通的,但它可能在你编译或运行的.sml文件中也行得通。
注意,你也会得到行中断。也许你不想要这个。
虽然你没有问,但你可以用同样的方法打印一个字符串。
- TextIO.output (TextIO.stdOut, Option.valOf wat);
Hello, World!
val it = () : unit
这里的问题是,当你从用户那里读到一行时,你可能什么都得不到,这就导致了以下结果 NONE
而不是一个空字符串 (Python 中的预期) 或一个异常 (Java 中的预期)。当你得到一些东西的时候,为了区分得到一个空的响应和没有得到响应,你得到的是 SOME "..."
.
如果你不在乎这种区别,你也可以让生活变得更简单,建立一些帮助函数。
(* helper functions *)
fun getLine () =
Option.getOpt (TextIO.inputLine TextIO.stdIn, "")
fun putLine s =
TextIO.output (TextIO.stdOut, s)
(* examples of use *)
val wat = getLine ()
val _ = putLine (wat ^ "!!!")
当你想问类似的问题时,你可以自己找到一些答案,通过键入 open TextIO;
进入 中的REPL。这告诉你 什么 函数在TextIO模块里面是有的,但不一定是做什么的。所以你能做的也是通过上网查文档。