我从Python学习了Dart,我想知道什么是最接近于在条件语句中使用非布尔变量作为布尔值的Dart。就像使用字符串一样,空字符串是false,而非空字符串是true。
例如,在Python中:
name = 'Yes'
print('True' if name else 'False') // 'True'
name2 = ''
print('True' if name else 'False') // 'False'Dart是否有类似的东西,而不必将变量转换为布尔语句?
发布于 2022-09-06 19:11:53
Dart对于在测试中使用非布尔值没有任何支持。什么都没有。做不到。
测试位置中唯一允许的表达式是具有静态类型的表达式:
booldynamic (它被隐式地向下转换为bool,好像后面跟着as bool,如果它实际上不是一个总是在生成值之前抛出的bool.)Never,),则在运行时抛出。非空安全代码中的bool类型可以计算为null.如果发生这种情况,测试也会在运行时抛出。
因此,对于任何测试,如果测试表达式不计算为bool,则会抛出。您只能在实际的bool true或false上进行分支。
如果您有一个值,您希望将null和空都视为false,我会这样做:if (value?.isEmpty ?? false) ...
发布于 2022-09-06 17:38:32
我认为这样的代码甚至不会编译。dart中的类型检查往往非常严格,每当编译试图计算不属于bool类型的条件时,就会引发错误。例如,以下内容无法编译:
final String value = "truthyValue" ? "truth" : "dare";相反,dart在许多内置类型(如字符串、不同容器等)上提供了isNonEmpty和isEmpty方法,因此您可以执行类似someString.isNotEmpty ? "good" : "bad";的操作。
发布于 2022-10-07 21:00:37
如果需要处理“0”或“00000”等特定值,则可以在任何类型上写入扩展。我非常喜欢它,因为它对于任何解析都很方便,而且如果您把它命名得很好,它是可读的。
extension BoolTest on String? {
bool get toBool {
if (this == null) {
return false;
} else {
return true;
}
}
}然后,您只需这样使用它:
String? a = 'hello';
String? b;
print(a.toBool); // true
print(b.toBool); // false
print('hello'.toBool) // truehttps://stackoverflow.com/questions/73625855
复制相似问题