F #

2013-04-25 3 views
3

에서 참조 배열의 요소에 액세스 배열 및 참조로 실험하고 있습니다. - 내 의도는 배열에 대한 참조를 만든 다음 해당 참조를 클로저 내에서 사용하여 배열의 특정 요소에 액세스하는 것입니다. FSI 시도 :F #

> let dk2 = Array.create 5 0 
let dk2ref = ref dk2;; 

val dk2 : int [] = [|0; 0; 0; 0; 0|] 
val dk2ref : int [] ref = {contents = [|0; 0; 0; 0; 0|];} 

> !dk2ref.[1] 

stdin(3,2): error FS0039: The field, constructor or member 'Item' is not defined 

참조 된 배열의 요소에 직접 액세스 할 수 있습니까? (이 경우 dk2ref의 두 번째 요소)?

답변

6

왜 참조 배열이 필요한지 잘 모르겠습니다.

operator precedence table을 검색하면 . 연산자의 우선 순위가 ! 연산자보다 높습니다. 따라서 'a refindexed properties을 구현하지 않았기 때문에 예제가 !(dk2ref.[1])으로 구문 분석됩니다.

당신은 적절한 장소에 괄호를 추가해야합니다

> (!dk2ref).[1] 
val it : int = 0 
+0

감사합니다! 나는 주로 참조와 배열의 사용을 실험하고 있었다. – misaochan