就拿大量使用 List Comprehension 的 Python 做比较,
- Dart 的一个 List Comprehension 里面可以包含多个“逻辑”
- “逻辑”的结果可以为空
这些特性 Python 需要分为多个 List Comprehension 且外层嵌套逻辑来实现,比如产生这样的一个 List:
( Dart 的实现)
void main() {
print([
if (2 > 1) 222 else 333,
if (2 > 3) 444,
for (int i in Iterable.generate(10)) if (i % 3 == 1) i,
for (int i in Iterable.generate(10, (x) => x + 100)) if (i % 2 == 0) i
]);
}
output: [222, 1, 4, 7, 100, 102, 104, 106, 108]
https://dartpad.dev/540d15e9a25afb2159ee1b380e98d906
( Python 的实现)
print(
[if (2 > 1) 222 else 333] +
([444] if (2 > 3) else []) +
[i for i in range(10) if i % 3 == 1] +
[i + 100 for i in range(10) if (i + 100) % 2 == 0]
)