2017-02-18 38 views
0

我无法找到一种方法来从用户给出的值中获取一个列表,我已经做了一个函数插入,它将一个值插入列表中,但我不知道如何从这里获取用户的值是我的代码包含4个示例A1,..,A4变量id喜欢从用户获得如何从用户输入的ocaml中获取值的列表

回答

1

您可以使用read_line从用户获取输入字符串,然后使用Str模块来分割它。

utop(请注意,用户输入 “1 2 3 4” THX到read_line()

#require "str";; 
#read_line() |> Str.split (Str.regexp " +") |> List.map int_of_string;; 
1 2 3 4 
- : int list = [1; 2; 3; 4] 
# 

然后,可以使用更复杂的regexp分裂您的输入(以管理逗号,分号。 ..)

[与第二条评论有关],让我们假设你想将字符串'“(5,3,5)(4,3,5)”'分割为整数的三元组,你首先根据括号分割(下面的第一个分割例子),然后对于每个分组,根据您需要的元素进行分割:

Str.split (Str.regexp ")") s |> 
    List.map (fun x -> Str.split (Str.regexp "[(, ]+") x |> 
      List.map int_of_string) ;; 

在这些元素不具有相同类型的情况下,您需要一个将列表作为输入并将其转换为元组的函数)。

+0

要求不工作即时通讯工作在文本编辑器 –

+0

我读了一点关于Str模块,但问题在这里是我怎么可以添加夫妇或三元组的每个例子(int * char * int)到列表 –

+0

第一条评论:当你编译你的代码时,将它与pkg str(ocamlbuild -use-ocamlfind -pkg str yourappli.native)联系起来。 –

相关问题