사용자가 지정한 값에서 목록을 가져 오는 방법을 찾을 수 없습니다. 이미 함수 삽입을 만들었습니다. 목록에 값을 삽입하지만 어떻게 생깁니 까? 여기에서 사용자로부터 값을 얻으려면 여기에 4 개의 예제 A1, .., A4의 변수 id를 포함하는 코드가 있습니다.ocaml에서 사용자 입력 값의 목록을 얻는 방법
0
A
답변
1
read_line
을 사용하면 문자열에서 사용자 입력을 얻을 수 있습니다. 그것을 분할하는 Str 모듈. utop
에서
#require "str";;
#read_line() |> Str.split (Str.regexp " +") |> List.map int_of_string;;
1 2 3 4
- : int list = [1; 2; 3; 4]
#
그런 다음 입력을 분할하는보다 복잡한 정규 표현식을 사용할 수 있습니다 (사용자 입력 read_line()
"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) ;;
요소가 모두 동일한 유형이 아닌 경우 목록을 입력으로 받아서 튜플로 변환해야하는 함수가 필요합니다.
요구 사항이 작동하지 않습니다. 텍스트 편집기에서 작동합니다. –
Str 모듈에 대해 조금 읽었지 만 여기에 (int * char * int)의 예제에 따라 커플 또는 트리플을 추가 할 수 있습니다. –
첫 번째 주석 : 코드를 컴파일 할 때 pkg str (ocamlbuild -use-ocamlfind -pkg str yourappli.native)과 링크하십시오. –