2011-01-26 2 views
4

저는 데이터 분석을 다루는 매우 높은 수준의 도메인 특정 언어로 작업하고 있습니다. 1 기반 인덱싱은 과학적 관점에서 갈 수있는 방법이라는 가상의 통일 합의가 있습니다. 물론 프로그래머는이 불일치를 싫어하지만 사실상 모든 사용자는 x [i]를 사용하여 i-1 요소가 아닌 요소를 나타내는 데 익숙합니다.CLR 기반 언어의 1부터 시작하는 색인?

CLR과의 정상적인 상호 운용성 이야기를 유지하는 데 사용할 수있는 디자인 원칙이 있습니까? 내 감각은 C# 기반 API와 함께 System.Collections 공간을 하나의 변형으로 자동 변환하면 우리는 거기 90 %가되어야한다는 것입니다. 그러나 나는 확실하지 않다. 예를 들어 IList 인터페이스를 자동으로 리베이스해야합니까? 그러나 C# API가 CustomRemove (zeroBasedIndex)를 구현하면 어떻게됩니까?

이 고통스러운 불일치를 쉽게하기 위해 할 수있는 다른 방법이 있습니까? System.Collections를 기반으로하는 방법을 어느 정도까지 가져야합니다.

마지막으로 CLR에 1 기반 언어의 예가 있습니까?

+0

... 여기에 matlab가 적합합니까? (그렇지 않다면 태그를 제거하십시오.) –

+0

@ Jason, 프로그래밍에서 과학자가 있다면, 저는 그들이 모델링에 MATLAB을 사용하고 있다고 가정하고 있습니다. –

답변

2

옵션 1 : 목록에 항목을 굽습니다. 요소 0을 널 (NULL) 값으로 설정하고 모든 논리적 인 색인은 1에서 시작하십시오.

옵션 2 : 목록에 대한 자체 랩퍼를 작성하고 getter가 있고 색인이 증가합니다.

+0

질문은 더 할 수 있습니다. API가 IList를 구현한다고 가정 해 보겠습니다. API가 CustomRemove (index)를 가질 수도 있기 때문에 RemoveAt (1)을 RemoveAt (0)로 자동 변환하는 것은 얼마나 위험한 일입니다. – Tristan

+0

구현이 일관되면 괜찮을 것입니다. –

1

VB는 배열의 기본 인덱스를 지정할 수 있도록 사용되지만 VB.NET에서는 구현되지 않았습니다. 즉, 실제로 CLR에서 1 기반 배열을 만들 수 있지만 약간 느리고 다른 CLR 언어와 호환되지 않습니다.

관련 문제