Есть ли какие-либо опасения по поводу возврата объекта типа generi c в Dart? - PullRequest
0 голосов
/ 18 июня 2020

Я хочу реализовать в проекте другой подход к обработке ошибок без цепочки исключений. Чтобы упростить задачу, я обычно пишу свою собственную базовую c либо-подобную модель.

class Either<F, T> {

  final F failure;
  final T value;

  const Either(this.failure, this.value);

  Object check (){
    if (failure != null) return failure;
    return value;
  }

}

Меня беспокоит возвращение типа Object, есть ли какие-либо проблемы или соображения с этим в Dart или на любом другом языке? c тип ...

dynamic check(){
  if (failure != null) return failure;
  return value;   
}

Ответы [ 2 ]

0 голосов
/ 24 июня 2020

Я просмотрел и решил использовать go с помощью baihu92 any_type. Он намного яснее и понятнее, чем в упаковке dartz. Вот моя реализация:

enter image description here

and the usage is like:

enter image description here

введите описание изображения здесь

0 голосов
/ 19 июня 2020

Думаю, в вашем случае это своего рода проводная реализация. Вопрос в том, что вы хотите делать с реальной реализацией? Вы хотите заменить if else, который будет появляться снова и снова? В таком случае, что бы вы сделали, если бы вам пришлось обработать ошибку (сбой)? Я думаю, что лучше использовать функции в качестве параметров. Вот короткое предложение.

class Either<T, F> {
  T value;
  F fail;

  Either(this.value, this.fail);

  void check(success(T value), {failure(F fail)}) {
    if (fail != null && failure != null) {
      failure(fail);
    } else if (value != null) {
      success(value);
    }
  }
}

class SomeClass {
  void checkTheImplementation() {
    Either<String, Error> maybeString = Either("testing", null);
    // if you don't want to handle the error.
    maybeString.check((value) => print(value));
    // if you want to handle the error
    maybeString.check((value) => print(value), failure: (err) {
      print(err.toString());
    });
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...