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

Dart中get/set属性的正确语法是什么?有什么易记的规则吗?

Dart getter/setter 语法规则与记忆技巧

标准语法

Dart 中实例属性的 getter、setter 固定写法如下:

getter(只读属性访问逻辑)

// 单行写法
返回值类型 get 属性名 => 取值逻辑;
// 示例
int get val => _val;

// 多行写法(可加入额外校验、计算逻辑)
int get val {
  if (_val < 0) return 0;
  return _val;
}

setter(可写属性赋值逻辑)

// 单行写法
set 属性名(参数类型 入参名) => 赋值逻辑;
// 示例
set val(int v) => _val = v;

// 多行写法
set val(int v) {
  if (v >= 0) _val = v;
}

快速记忆法则

  • 关键字位置:get/set 是访问逻辑的标记,永远放在返回值类型之后,属性名之前,不要把get/set写在整行最开头。
  • getter 无参数、要返回值:getter 模拟普通属性的读取行为,调用时不需要加括号,因此定义时不需要写参数括号,必须标注返回值类型。
  • setter 无返回值、要单参数:setter 模拟普通属性的赋值行为,调用时是赋值语句无返回值,因此定义时不需要写返回值类型,只需要传1个赋值用的入参即可。
  • 类比普通方法记:普通方法结构是返回值 方法名(参数列表),getter 相当于把方法名替换为get 属性名、去掉参数列表;setter 相当于去掉返回值、把方法名替换为set 属性名、仅保留1个赋值参数。

常见写法错误说明

你尝试的几种写法问题分别对应:

  1. get int val => _val;:get 关键字位置错误,应该放在返回值int之后
  2. int val get => _val:属性名val位置错误,应该放在get之后,且语句末尾缺分号
  3. val set(v) => _val = v;:set 关键字位置错误,应该放在属性名val之前,且缺少入参类型标注

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:24:01