Как преобразовать кортеж C # в кортеж F #? - PullRequest
0 голосов
/ 07 февраля 2019

Как мне преобразовать кортеж C # в кортеж F #?

В частности, у меня есть реализация C # типа Result:

public class Result<T,E>
{
    public Result(T data) => Ok    = (true,data);

    public Result(E data) => Error = (true,data);

    public (bool,T) Ok    { get; }
    public (bool,E) Error { get; }
}

Я хочу взять значение кортежа:результат Ok или результат Error и используйте его в моем коде F #.

Пример:

let result = databaseService.getSomething(userIdValue) |> Async.AwaitTask |> Async.RunSynchronously

let isSuccessful,forms = result.Ok

Однако я получаю следующую ошибку:

Ошибка FS0001Один тип кортежа является структурным кортежем, другой - эталонным кортежем

В заключение я не совсем понимаю, как преобразовать кортеж C # в кортеж F #.Я нашел эту ссылку .Но я не смог использовать его для того, что мне было нужно.

1 Ответ

0 голосов
/ 07 февраля 2019
Синтаксис кортежа

C # 7.0 создает ValueTuple значения, которые отличаются от кортежей F # (более старые Tuple классы).К счастью, начиная с F # 4.1, вы можете использовать

let struct (isSuccessful, forms) = result.Ok

Обратите внимание на дополнительное ключевое слово struct в шаблоне.Вы можете использовать тот же синтаксис для создания новых ValueTuple значений, таких как let tup = struct (true, 42)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...