3
나는 F# how to extended the generic array type?이라는 질문을 읽고 대답했습니다. 나는 할 수없는 일에 매우 가깝습니다. 'T[]
과 마찬가지로 'T[][]
유형을 확장 할 수 있습니까?F # 가변 배열 형식
나는 F# how to extended the generic array type?이라는 질문을 읽고 대답했습니다. 나는 할 수없는 일에 매우 가깝습니다. 'T[]
과 마찬가지로 'T[][]
유형을 확장 할 수 있습니까?F # 가변 배열 형식
들쭉날쭉 한 배열 [][]
은 다른 배열을 전문으로하는 배열 []
입니다.
당신은 2 차원 배열입니다 [,]
사용할 수 있습니다
type 'T ``[,]`` with
member a.First = a.GetValue(0,0)
(array2D [| [| 1 .. 10 |] ; [| 11 .. 20 |] |]).First
을하지만 당신이 정말로 [][]
를 사용하려면이 F 번호 특정 표기와 함께 할 수 없다, 이후 전문 선언 할 수 없습니다 이 표기법은 유형 정의를 반영, 그래서 당신은 그것에게 .NET 방법을 할 필요가 :
[<System.Runtime.CompilerServices.Extension>]
module Extensions =
[<System.Runtime.CompilerServices.Extension>]
let First (x :_ [][]) = x.[0].[0]
C 번호에서 액세스 할 때 그것은 작동하지만 F 번호에서 나는 당신이 필요합니다 생각 F # 3.1
예, 가능합니다. 하지만'''''''''''''''''''''''''''''''''''''''는 동일한 유형이 아닙니다. – torbonde
당신은 똑같지는 않지만 'T [] []는 배열을 요소로 갖는 일반적인 배열입니다. 그래서 당신이 이것을 이것을 사용하고 싶다면 당신이 링크 된 대답과 같은 방식으로 확장 할 수 있습니다. 특정 형식에 특화된 제네릭 형식의 확장을 지정하려는 경우 해당 표기법을 사용할 수 없다고 생각하지만 표준 .NET 방식으로 할 수 있습니다. 하지만 F # 3.1이 필요합니다 – Gustavo
대단히 감사합니다! 나는 이것을 명심해야한다. – torbonde