2
A
답변
7
아니다 let f() = ...
~ let f = fun() -> ...
이면 a
의 선언을 f
의 정의 안에 넣을 수 있지만 functio 시작 전에 엔. 그러면 a
을 f
에 로컬로 유지하면서 기능을 a
이상으로 닫을 수 있습니다. 이 문제는 변경 가능한 변수를 닫을 수 없기 때문에 대신 참조를 사용해야합니다.
let f =
let a = ref 0
fun() ->
....
+0
완벽. 감사. –
4
간단한 아날로그 기능 전에하자를 넣어하는 것입니다
let mutable static a = 0
let f() =
당신이 정말로 당신이 부모 모듈의 전체 일을 싸는 수있는 변수를 숨기고 싶어합니다.
그렇지 않으면 시퀀스 표현식은 함수에서 변수를 기억할 수 있지만 상당히 중요한 변화입니다.
일부 다른 아이디어 - 클래스 안에 숨기기 :
type t() =
static let mutable t = 1
static member f() = 1
또는 모듈 방식의 모듈
module t =
let mutable private t = 1
let f() = 1
를, F는 볼 수 있지만, desugar 경우 t는
+0
sepp2k에서 변형 된 것보다 조금 더 복잡합니다. 도와 줘서 고마워. –
함수 외부에서이 변수에 액세스해야합니까? 정적 수정 자 (static modifier)는 무엇입니까? – Petr
@ Petr No. 외부 액세스 권한이 없습니다. 나는 그것이 "기능적인 방법"이 아니라는 것을 안다. 함수는 한 번만 호출해야합니다. 그 이유는 관심이 있습니다. –