2011-08-15 2 views
0

HDF5DotNet에서 재생합니다 (http://hdf5.net/ 참조). 말F #을 사용하는 4 차원 배열 이상 - 객체를 초기화 할 수 없습니다.

new 'Type [] 
new 'Type [,] 
new 'Type [,,] 
new 'Type [,,] 
new 'Type [,,,] 
new 'Type [,,,,] 
new 'Type [,,,,,] 
... 

내가 비록 2 차원 배열에 대한

let data = Array2D.create 256 512 4. 
let test = H5Array data 

쓰기 나는 오류가 발생 : 이런 종류의 생성자를 많이 가지고있는 클래스 H5Array

internal error: F# supports a maxiumum .NET array dimension of 4

내 두 가지 질문은 다음과 같습니다.

  1. 그것은 2D 데이터에서 작동합니까?
  2. 4 차원 이상의 데이터를 처리하는 방법은 무엇입니까?

답변

0

흠, 질문 # 2, 난 당신이 큰 순위로 배열을 만들기 위해 Array.Create

http://msdn.microsoft.com/en-us/library/dfs8044k.aspx

를 사용하는 거라고 기대합니다. 하지만 # 1이 컴파일러 버그인지 궁금합니다.

+0

답변 해 주셔서 감사합니다. 이'let data = Array.CreateInstance (float.GetType(), [| 1; 2; 3; 4; 5 |])'는 동일한 오류를 발생시킵니다. 어딘가에서이 행동을보고해야합니까, 아니면 그렇게할까요? BTW : 작동하도록 주변에 어떤 문제가 있습니까? 내가 생각할 수있는 유일한 것은 다른 C# 프로젝트를 만들고 생성자를 래핑하는 것입니다. –

+0

F # 컴파일러/언어의 제한 사항입니다 (언어 사양에 따르면 F #은 최대 4 개까지만 지원함). 우리가 야생에서 더 높은 등급의 실제 사례를 만난 것을 상기 한 것은 이번이 처음입니다. 이러한 생성자를 호출하고 F #이 상위 배열을 볼 필요가 없도록하는 몇 가지 정적 메서드를 노출하는 C# 형식의 생성자를 래핑하면 실제로 해결할 수 있습니다. – Brian

+0

설명해 주셔서 감사합니다. 그러나 객체가 더 높은 순위의 생성자를 가지고있을 때 적어도 순위 4에서 항상 작동해야합니다. –