0
我無法找到一種方法來從用戶給出的值中獲取一個列表,我已經做了一個函數插入,它將一個值插入列表中,但我不知道如何從這裏獲取用戶的值是我的代碼包含4個示例A1,..,A4變量id喜歡從用戶獲得如何從用戶輸入的ocaml中獲取值的列表
我無法找到一種方法來從用戶給出的值中獲取一個列表,我已經做了一個函數插入,它將一個值插入列表中,但我不知道如何從這裏獲取用戶的值是我的代碼包含4個示例A1,..,A4變量id喜歡從用戶獲得如何從用戶輸入的ocaml中獲取值的列表
您可以使用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) ;;
在這些元素不具有相同類型的情況下,您需要一個將列表作爲輸入並將其轉換爲元組的函數)。
要求不工作即時通訊工作在文本編輯器 –
我讀了一點關於Str模塊,但問題在這裏是我怎麼可以添加夫婦或三元組的每個例子(int * char * int)到列表 –
第一條評論:當你編譯你的代碼時,將它與pkg str(ocamlbuild -use-ocamlfind -pkg str yourappli.native)聯繫起來。 –