문자열을 가져 와서 문자열의 일부 유형에 따라 결과를 얻으려는 다른 함수를 호출하고 싶습니다.OCaml : IF 문 내에서 문자열 반환
"이 표현은 형식 문자열을 가지고 있지만 표현이 형 유닛으로 예상되었다"
let convert_string lval value =
if (String.index value '{' > 0) then
Pretty_utils.sfprintf "%s" convert_1 lval value
else
Pretty_utils.sfprintf "%s" convert_2 lval value
그러나,이 코드는 컴파일러 오류가 발생합니다 :처럼 내 코드 보인다.
누구든지이 문제에 익숙합니까?
덕분에 모든
()
이 필요합니다. 이제 작동합니다. 그러나 런타임에 Not_found 오류가 발생합니다. 나는 try ..를 Not_found와 함께 사용했다. 그런 다음 작동하지만 두 가지 경우 만 처리 할 수있다. 2 건 이상을 처리하고 싶습니다. if.. then else if then then else 어떻게해야합니까? – user2544482코드에 '{'가 없으면 Not_found가 있습니다. 당신은 다른 케이스를'with Not_found -> .... 예외 핸들러에 넣어야 만한다. (어떤 ocaml 코드도 사용할 수있다.) –
거기에 문자열을 파싱하는 것 같다. ocamlyacc/ocamllex 또는 regex 나 stream parser 또는 camlp4 파서와 같이 더 전문화 된 도구를 사용하는 것이 더 좋지만, 다른 질문 (아마도 이미 어딘가에 물어 보았을 것입니다)의 주제입니다. –