Я не могу найти способ получить список из значений, заданных пользователем. I уже сделал функцию insert, которая вставляет значение в список, но я не знаю, как для получения значений от пользователя здесь мой код, содержащий 4 примера A1, .., A4 переменных id, как получить от пользователяКак получить список значений из пользовательского ввода в ocaml
ответ
Вы можете использовать read_line
, чтобы получить ввод от пользователя в строке, а затем использовать Str, чтобы разбить его.
В utop
(обратите внимание, что пользователь вводит «1 2 3 4» ТНХ к 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) ;;
В случае, если элементы не имеют одинакового типа, вам нужна функция, которая принимает список в качестве входных данных и переводит его в кортеж).
требует не работать im, работая над текстовым редактором –
Я немного читаю о модуле Str, но проблема заключается в том, как я могу добавить пары или триплеты на пример (int * char * int) в список –
для 1-й комментарий: когда вы компилируете свой код, связывайте его с pkg str (ocamlbuild -use-ocamlfind -pkg str yourappli.native). –