gpt4 book ai didi

flutter - 在 Dart 中区分 undefined 和 null

转载 作者:行者123 更新时间:2023-12-03 03:30:56 26 4
gpt4 key购买 nike

考虑以下函数:

 BasicClass copyWith({
String id,
}) {
// some code behaving differently for 1) id is undefined and 2) id is explicit null
}
并考虑以下两个参数:
  • 什么都没有(id 未定义)
    复制();
  • 空(id 为空)
    复制(ID:空);

  • 在 copyWith 方法中,有什么方法可以使它对 1) 和 2) 表现不同

    最佳答案

    没有办法区分null从“没有参数传递”。
    唯一的解决方法(Freezed 使用它来生成支持 null 的 copyWith)是使用自定义默认值作弊:

    final undefined = Object();

    class Example {
    Example({this.param});
    final String param;

    Example copyWith({Object param = undefined}) {
    return Example(
    param: param == undefined ? this.param : param as String,
    );
    }
    }
    这需要将变量键入为 Object尽管。
    要解决这个问题,您可以使用继承来隐藏 Object在类型安全的接口(interface)下(再次参见 Freezed):
    final undefined = Object();

    class Example {
    Example._();
    factory Example({String param}) = _Example;

    String get param;

    void method() {
    print('$param');
    }

    Example copyWith({String param});
    }

    class _Example extends Example {
    _Example({this.param}): super._();

    final String param;

    @override
    Example copyWith({Object param = undefined}) {
    return Example(
    param: param == undefined ? this.param : param as String,
    );
    }
    }

    关于flutter - 在 Dart 中区分 undefined 和 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63928513/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com