Как определить метод расширения для неуниверсального массива? - PullRequest
0 голосов
/ 28 октября 2018

Я не могу понять, каков правильный синтаксис для определения метода расширения для неуниверсального массива. Этот вопрос имеет дело с универсальными массивами, но попытка подобной конструкции для массива байтов не работает.

Я перепробовал много вариантов:

type Byte ``[]`` with 
type byte ``[]`` with
type Byte array with
type byte array with
type array<Byte> with
type array<byte> with
type []<Byte> with
type []<byte> with

а также все эти конструкции, заключенные в двойные обратные кавычки или круглые скобки, но ничего не работает.Я скачал спецификацию языка, но у нее есть только пример общего массива.

1 Ответ

0 голосов
/ 28 октября 2018

Это, скорее всего, странная вещь с необязательными расширениями типов, которые могут стать довольно прикольными, когда используются дженерики .Вместо этого я бы использовал такой метод расширения:

open System.Runtime.CompilerServices

[<Extension>]
type ByteArrayExtensions =
    [<Extension>]
    static member inline Sum(xs: byte[]) = Array.sum xs

let f() =
    let xs = [| byte(1); byte(2); byte(3) |]
    xs.Sum()
...