2011-04-19 9 views
2

ocaml에서 수행해야 할 작업이 있으므로 여기를 클릭하면 도움말 정보를 찾을 수 없습니다.) 전역 변수를 사용하지 않고 각 호출에서 다른 함수를 제공하는 함수를 정의하는 방법은 무엇입니까? 다음 재미있는 숫자 나 계승의 다음 값을 반환하는 재미있는 next()를하고 싶습니다. 이ocaml - args 및 전역 변수가없는 함수

# next();; 
- : int = 1 
# next();; 
- : int = 3 
# next();; 
- : int = 5 
# next();; 
- : int = 7 

처럼

당신이 나에 대한 도움말이 있습니까? 사전에

덕분에

그렉

답변

5
당신은 또한 "카운터 공장"에서 이것을 캡슐화 할 수
let next = 
    let private_counter = ref (-1) in 
    fun() -> 
    private_counter := !private_counter + 2; 
    !private_counter 

:

let make_counter() = 
    (* note the() parameter : at each call of make_counter(), 
    a new "next function" with a fresh counter is generated *) 
    let private_counter = ... 
+1

재미, 내가 인터뷰 질문 질문의 종류 : – Yoric

+0

도움을 주셔서 감사합니다;) – Greg

+0

한 가지 더 질문;) 다음 캡슐화하는 방법? make_counter를 추가하려고하지만 구문 오류가 있습니다. 어떻게 보이나요? – Greg

관련 문제