如何用SML语言从用户键盘读取字符串?
我不熟悉SML语言,我想这样做:如何用SML语言从用户键盘读取字符串?,sml,smlnj,Sml,Smlnj,我不熟悉SML语言,我想这样做: 问一个人“你的全名是什么?” 从用户键盘获取答案 写上“你的全名是”+姓名(他或她的名字) 这个答案有三个部分。第一部分回答了你唯一的问题。第二部分回答了一个你似乎没有问过的问题,第三部分讲述了如何通过自己的方式找到问题的答案 如何用SML语言从用户键盘读取字符串 您可以使用TextIO.inputLine TextIO.stdIn: - val wat = TextIO.inputLine TextIO.stdIn; Hello, World! val wa
- 问一个人“你的全名是什么?”
- 从用户键盘获取答案
- 写上“你的全名是”+姓名(他或她的名字)
- 这个答案有三个部分。第一部分回答了你唯一的问题。第二部分回答了一个你似乎没有问过的问题,第三部分讲述了如何通过自己的方式找到问题的答案
如何用SML语言从用户键盘读取字符串
您可以使用
TextIO.inputLine TextIO.stdIn
:
- val wat = TextIO.inputLine TextIO.stdIn;
Hello, World!
val wat = SOME "Hello, World!\n" : string option
请注意,这实际上在我的Poly/ML REPL(也称为“顶层”或“提示符”)中不起作用,但它在我的SML/NJ和Moscow ML REPL中都起作用,但它可能在编译或运行的.SML文件中起作用
还要注意,您也将获得换行符。也许你不想那样
虽然您没有询问,但您可以使用大致相同的方式打印字符串:
- TextIO.output (TextIO.stdOut, Option.valOf wat);
Hello, World!
val it = () : unit
这里的问题是,当您从用户处读取一行时,可能什么也得不到,这导致值NONE
,而不是一个空字符串(您在Python中所期望的)或一个异常(您在Java中所期望的)。当你得到一些东西时,为了区分得到的是空响应还是没有响应,你得到了一些“…”
如果您不在乎这一区别,还可以让生活更轻松,并构建一些帮助器函数:
(* 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 ^ "!!!")
当你想问类似的问题时,你可以自己键入
opentextio代码>输入您的回复。这会告诉您TextIO模块中有哪些功能可用,但不一定说明它们的功能。因此,您还可以通过谷歌搜索来查找文档: