You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter的Either模块中Left与Right分别是什么?

Dart中Left、Right的作用及原理

核心本质

Left和Right是函数式编程错误处理模型Either的两个子类,核心遵循左错右对的行业通用约定:

  • 泛型定义为Either<L, R>,Left<L, R>用来承载错误类型L的结果
  • Right<L, R>用来承载正常返回类型R的结果

核心用途

  • 显式标记函数的返回结果可能性:只要函数返回值是Either类型,调用方就可以明确知道这个函数执行可能出错,必须同时处理成功、失败两种场景
  • 替代传统异常抛出的错误处理模式:避免运行时未捕获异常导致的崩溃,两种返回结果的类型都是编译期可校验的,代码健壮性更高

结合你提供的代码示例说明

你贴出的业务代码逻辑非常典型:

try {
  return Right(_doSomethingAndReturnSingleValue());
} on CustomException {
  return Left(CustomException());
}

这段逻辑的作用就是把原本会抛出异常的逻辑封装成Either类型返回:

  • 当_doSomethingAndReturnSingleValue()执行无异常时,把返回值包裹在Right中返回,代表这是成功结果
  • 当执行抛出CustomException类型异常时,把异常对象包裹在Left中返回,代表这是错误结果

调用方可以直接通过Either自带的fold方法统一处理两种场景,不需要再嵌套try-catch:

final res = executeFunction();
res.fold(
  (err) {
    // 处理错误逻辑,比如提示用户操作失败
  },
  (data) {
    // 处理成功逻辑,比如渲染返回的业务数据
  }
);

fold方法会根据返回的是Left还是Right自动执行对应的回调,强制调用方必须同时处理两种场景,避免漏处理错误的问题。

内容的提问来源于stack exchange,提问作者Turkey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:24:04