2017-02-18 37 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)聯繫起來。 –

相關問題