关于 check-if-an-object-is-truthy-in-dart
这项 Dart 技能介绍如何通过扩展和辅助函数,为可空对象添加类似 JavaScript 的真值判断,适合需要在条件或赋值中将不同类型值转为布尔值的 Dart 开发者。
主要功能
- 01为可空对象添加扩展 getter
- 02使用辅助函数判断真值
- 03处理 null、布尔值和数字
适用场景
- 01在条件中判断不同类型的值
- 02将可空值转换为布尔赋值
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rodydavis/ skills --skill check-if-an-object-is-truthy-in-dart安装后在 Claude Code 中输入/check-if-an-object-is-truthy-in-dart确认已加载。
详细介绍
在 Dart 中检查对象是否为真值
如果你来自 JavaScript 这类语言,可能已经习惯检查对象是否为真值。
if (true)
if ({})
if ([])
if (42)
if ("0")
if ("false")
if (new Date())
if (-42)
if (12n)
if (3.14)
if (-3.14)
if (Infinity)
if (-Infinity)
在 Dart 中,你需要显式检查对象是否不为 null、是否为 true/false,或者根据类型判断该值是否为 true。
不过,可以使用 Dart 扩展来添加真值功能。
extension on Object? {
bool get isTruthy => truthy(this);
}
bool truthy(Object? val) {
if (val == null) return false;
if (val is bool) return val;
if (val is num && val == 0) return false;
if (val is String && (val == 'false' || val == '')) return false;
if (val is Iterable && val.isEmpty) return false;
if (val is Map && val.isEmpty) return false;
return true;
}
这样一来,任何对象都可以在 if 语句或值赋值中作为真值进行求值。
输出如下:
(null, false)
(, false)
(false, false)
(true, true)
(0, false)
(1, true)
(false, false)
(true, true)
([], false)
([1, 2, 3], true)
({}, false)
({1, 2, 3}, true)
({a: 1, b: 2}, true)
演示
评论
支持 Markdown