请求解析Flutter/Dart中Getter内this关键字的作用
解析Dart扩展中Getter里的
this关键字用法 先看完整代码:
enum CategoryStatus { initial, success, error, loading, selected } extension CategoryStatusX on CategoryStatus { bool get isInitial => this == CategoryStatus.initial; bool get isSuccess => this == CategoryStatus.success; bool get isError => this == CategoryStatus.error; bool get isLoading => this == CategoryStatus.loading; bool get isSelected => this == CategoryStatus.selected; }
核心用法解析
this的指代对象:在这个扩展的Getter方法里,this直接指向调用该Getter的具体CategoryStatus枚举实例。比如你写CategoryStatus.initial.isInitial时,this就是CategoryStatus.initial这个枚举值;写CategoryStatus.loading.isLoading时,this就是CategoryStatus.loading实例。为什么必须用
this:因为扩展是给CategoryStatus类型添加额外成员,Getter本质是当前实例的属性,必须用this来明确要拿当前实例和枚举常量做比较。如果省略this直接写== CategoryStatus.initial,语法上缺少比较的左值,根本无法运行。实际价值:这种写法把枚举值的判断逻辑封装成可读性更强的Getter,原本要写
if (currentStatus == CategoryStatus.success),现在可以写成if (currentStatus.isSuccess),代码更简洁易懂,也符合Dart的语法糖设计思路。
内容的提问来源于stack exchange,提问作者Nahom Ersom
相关产品推荐
相关产品推荐

