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

如何创建用于表示带命名字段的Dart记录的typedef?

Dart 带命名字段的 Record Typedef 定义方法

你要定义带命名字段的record typedef,只需要在record的定义中使用({ ... })包裹字段,并为每个字段指定名称即可,后续可以直接通过字段名访问,而非位置标识符($1、$2)。

原位置字段的Record Typedef(你提供的示例)

/// 包含以下信息的record:
/// * 可执行文件名称
/// * 参数列表
typedef Command = (
  String executable,
  List<String> arguments,
);

extension Compose on Command {
  /// 将可执行文件和参数拼接成命令字符串
  String get cmd => '${this.$1} ${this.$2.join(' ')}';
}

带命名字段的Record Typedef 修改版本

/// 包含以下信息的record:
/// * 可执行文件名称
/// * 参数列表
typedef Command = ({
  String executable,
  List<String> arguments,
});

extension Compose on Command {
  /// 将可执行文件和参数拼接成命令字符串
  String get cmd => '${this.executable} ${this.arguments.join(' ')}';
}

关键区别说明

  • 定义时:将record的普通括号(...)替换为({ ... }),内部每个字段采用类型 字段名的格式声明
  • 访问时:直接通过字段名(如executable、arguments)访问,无需依赖$1、$2这类位置索引,代码可读性更强

使用示例

void main() {
  // 实例化时通过字段名赋值
  Command lsCommand = (executable: 'ls', arguments: ['-l', '/usr']);
  print(lsCommand.cmd); // 输出:ls -l /usr
}

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

相关产品推荐
方舟 Agent Plan

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

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