gpt4 book ai didi

dart - 在可能的空值上调用方法时使用问号运算符吗?

转载 作者:行者123 更新时间:2023-12-03 03:17:47 25 4
gpt4 key购买 nike

我有一个变量,其中包含一个可能为空的对象。当尝试调用一个方法时,我必须检查是否为空。如果变量为空,我希望结果为假。什么是良好且可读的风格?

例如

class MyClass {
bool boolMethod() {
return true;
}
}

void main() {
MyClass mc = new MyClass();
MyClass mcnull = null;

bool val1 = mc?.boolMethod();
bool val1null = mcnull?.boolMethod();

bool val2 = mc != null && mc.boolMethod();
bool val2null = mcnull != null && mcnull.boolMethod();
}

特别是在 if 语句中使用时,我认为第一个版本更具可读性:

if (mc?.boolMethod())...

对比

if (mc != null && mc.boolMethod())...

但是 IntelliJ 给了我提示“?”的值运算符可以为“null”,这不适合作为本地运算符的操作数。 (null_aware_in_逻辑_operator)。好的 - 这是正确的,因为当变量为 null 时,我使用 null 作为 bool 值。但对我来说没关系,我会尽量避免抑制警告。

建议的方法是什么?还有其他想法吗?

最佳答案

我认为常见的模式是

  bool val1 = (mc?.boolMethod() ?? false);

此处不需要括号,但如果将此类表达式嵌入到更复杂的表达式中,则通常需要它们才能获得预期的行为,因为 ?? 的优先级较低

关于dart - 在可能的空值上调用方法时使用问号运算符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49703956/

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