2013-08-21 2 views
6

다음은 this question입니다. 일반적인 F # Array Type을 어떻게 확장 할 수 있는지 궁금합니다.F # 일반 배열 유형을 확장하는 방법은 무엇입니까?

type System.Array with 
    member a.Last = a.GetValue(a.Length - 1) 

을하지만 토마스가 언급 한 바와 같이이 비 제네릭 : 나는이 작업을 수행 할 수 있습니다. 다음으로이 시도했지만 작동하지 않습니다 :이 네임 스페이스를 발견 F 번호의 scource에서

type Microsoft.FSharp.Collections.Array with // Error: Array is not defined  
    member a.Last = a.[a.Length - 1] 

을하지만이 중 하나가 작동하지 않습니다

type Microsoft.FSharp.Primitives.Basics.Array with // Error: Array is not defined   
    member a.Last = a.[a.Length - 1] 

답변

16

이 조금 혼란 - 그러나 나는 최근에 있었다 은 F # 사양 뭔가를 찾고이 건너 온 : 이중 백틱 인코딩은 일반적으로 당신이 PROPERT을 갖고 싶어 예 (유효 F 번호 식별자로 예약 된 키워드를 설정하는 데 사용됩니다

type 'T ``[]`` with 
    member a.Last = a.[a.Length - 1] 

[| 1 .. 10 |].Last 

이름에 공백이 있거나 이름이 let 인 y). 여기서 컴파일러는 []을 배열의 특수 구문이 아닌 일반 형식 인 "이름"으로 처리해야한다는 것을 의미합니다.

관련 문제