You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断参数是否为空并安全调用函数?有无更简洁优雅的写法?

空安全下参数判空与函数调用的优雅写法

核心需求实现

你要的是空安全场景里,参数非空时才调用函数,为空则返回null的简洁写法,完全可以替代冗余的三元表达式。

简化方案

你的方向是对的,用Dart的空安全操作符就能大幅简化代码:

基础场景:成员方法调用

就像你举的例子:

int? y = null;
// 不需要加 ?? null,y?.toDouble() 本身在y为空时就返回null
double? x = y?.toDouble();

这里的?.是条件成员访问符——如果y非空,就执行toDouble();如果y是null,直接返回null,全程不需要!断言,完全符合空安全要求。

普通函数调用场景

针对你原来的写法:

var? x = null == y ? null : foo(y!);

可以简化成两种方式:

  1. 基础判空写法:
var? x = y != null ? foo(y) : null;
  1. 更紧凑的let函数写法(Dart 3+ 或引入collection包):
var? x = y?.let(foo);

let会自动把非空的y传递给foo,空值时直接返回null,代码更简洁。

常见场景示例

  • 带额外处理的函数调用:
String? input = "  test  ";
int? trimmedLength = input?.let((s) => s.trim().length);
  • 链式多操作:
String? nickname = "  bob  ";
String? formattedNick = nickname?.trim().toUpperCase();

内容的提问来源于stack exchange,提问作者user6097845

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 05:35:31