如何创建用于表示带命名字段的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
相关产品推荐
相关产品推荐

