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

Dart空感知运算符(??)输入空值时未正常工作问题咨询

Dart: 空感知运算符(??)未按预期触发默认值的原因及修复

当你直接回车不输入内容时,stdin.readLineSync()返回的是空字符串"",而非null。而??运算符仅在左侧表达式结果为null时才会使用右侧的默认值,所以此时不会触发'hello',导致输出空行。

只有当输入流被关闭(如终端中按下Ctrl+D)时,stdin.readLineSync()才会返回null,这时候??才会生效。

要实现“无输入时输出默认值”的需求,需要同时判断null和空字符串,修改后的代码如下:

import 'dart:io';

void main() {
    print("Enter a string");
    String? temp = stdin.readLineSync();
    String input = temp == null || temp.isEmpty ? 'hello' : temp;
    print(input);
}

如果你偏好更简洁的写法,可以使用Dart 2.13+的let扩展方法:

import 'dart:io';

void main() {
    print("Enter a string");
    String input = stdin.readLineSync().let((val) => val == null || val.isEmpty ? 'hello' : val);
    print(input);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:07:08