2017-02-18 2 views
0

사용자가 지정한 값에서 목록을 가져 오는 방법을 찾을 수 없습니다. 이미 함수 삽입을 만들었습니다. 목록에 값을 삽입하지만 어떻게 생깁니 까? 여기에서 사용자로부터 값을 얻으려면 여기에 4 개의 예제 A1, .., A4의 변수 id를 포함하는 코드가 있습니다.ocaml에서 사용자 입력 값의 목록을 얻는 방법

답변

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) ;; 

요소가 모두 동일한 유형이 아닌 경우 목록을 입력으로 받아서 튜플로 변환해야하는 함수가 필요합니다.

+0

요구 사항이 작동하지 않습니다. 텍스트 편집기에서 작동합니다. –

+0

Str 모듈에 대해 조금 읽었지 만 여기에 (int * char * int)의 예제에 따라 커플 또는 트리플을 추가 할 수 있습니다. –

+0

첫 번째 주석 : 코드를 컴파일 할 때 pkg str (ocamlbuild -use-ocamlfind -pkg str yourappli.native)과 링크하십시오. –