如何从ocaml中的用户输入中获取值列表

时间:2017-02-18 18:12:56

标签: list functional-programming ocaml

我找不到从用户给出的值中获取列表的方法我已经创建了一个在列表中插入值的函数插入但我不知道如何从这里获取用户的值是我的包含4个示例A1,..,A4的变量id的代码来自用户

1 个答案:

答案 0 :(得分: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]  
 #

然后,您可以使用更复杂的正则表达式来分割您的输入(以管理逗号,分号,...)

[与第二条评论相关],假设您要将字符串'“(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) ;;

如果元素的类型不同,则需要一个将列表作为输入并将其转换为元组的函数。