首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么带有级联的dart方法链不能与setter方法一起工作?

带有级联的Dart方法链不能与setter方法一起工作的原因是,级联操作符(..)在Dart中用于对同一个对象进行多个连续的操作,而setter方法是用于修改对象的属性值。由于级联操作符返回的是当前对象,而setter方法返回的是void,二者的返回类型不一致,因此无法在级联操作符后直接调用setter方法。

例如,假设有一个Person类,其中包含name属性和setName()方法:

代码语言:txt
复制
class Person {
  String name;

  void setName(String newName) {
    name = newName;
  }
}

如果想要使用级联操作符来设置name属性并调用setName()方法,以下代码将会报错:

代码语言:txt
复制
Person person = Person()
  ..name = 'John'
  ..setName('Doe'); // 错误!无法在级联操作符后调用setter方法

为了解决这个问题,可以使用普通的方法调用来替代setter方法,或者将setter方法的返回类型改为当前对象类型,使其与级联操作符的返回类型一致。

另外,腾讯云提供了丰富的云计算产品和服务,包括云服务器、云数据库、云存储等,可以根据具体需求选择适合的产品。具体产品介绍和相关链接可以参考腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Flutter与Dart 入门

    Flutter是什么 Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。...为什么采用dart Flutter采用Dart语言进行开发,而并非Java,Javascript这类热门语言,这是Flutter团队对当前热门的10多种语言慎重评估后的选择。...,但可以用var或 dynamic来声明一个变量,Dart会自动推断其数据类型,dynamic类似c# 没有赋初值的变量都会有默认值null Dart支持顶层方法,如main方法,可以在方法内部创建方法...length); // null print(str2.length); // 报错 ..运算符(级联操作) 使用..调用某个对象的方法(或者成员变量)时,返回值是这个对象本身,这样就能方面实现链式调用...(this.left, this.top, this.width, this.height); // right, bottom两个成员变量提供getter/setter方法 num get

    1.3K20

    上手指南 | Dart,随用随查

    Expr1 : expr2 类型问题:警告和错误,警告表示代码可能无法正常工作,但不会阻挡程序的执行,错误可能是编译或者运行时的错误,编译时错误会阻止代码的执行,运行时错误会导致代码在执行中引发异常(...1 的单词为 上下文关键字,仅在特定位置具有含义,他们在任何地方都是有效标识符 带有 2 的为 内置标识符,这些关键字大多数地方都是有效的标识符,不能用于类型名称 和 import 前缀 带有 3 的是...级联运算符 级联运算符可以对一个对象进行一些了操作,除了调用函数,还可以访问同一对象上的字段属性, void main() { new A() ..a1() ..a2(); } class...异常 ​ Dart 可以抛出和捕获异常,如果没有被捕获,则会抛出,最终导致程序终止运行 ​ 和 Java 不同,Dart 中的所有异常时非检查异常,方法不会声明它们抛出的异常,也不要求捕获任何异常 ​...} 未初始化的变量为 null 所有实例变量都隐式生成 getter 方法,非 final 的变量会生成 setter 方法 默认构造 没有声明构造时,Dart 会提供一个默认的构造 构造函数不被继承

    1.8K70

    上手指南 | Dart,随用随查

    Expr1 : expr2 类型问题:警告和错误,警告表示代码可能无法正常工作,但不会阻挡程序的执行,错误可能是编译或者运行时的错误,编译时错误会阻止代码的执行,运行时错误会导致代码在执行中引发异常(#...1 的单词为 上下文关键字,仅在特定位置具有含义,他们在任何地方都是有效标识符 带有 2 的为 内置标识符,这些关键字大多数地方都是有效的标识符,不能用于类型名称 和 import 前缀 带有 3 的是...级联运算符 级联运算符可以对一个对象进行一些了操作,除了调用函数,还可以访问同一对象上的字段属性, void main() { new A() ..a1() ..a2(); } class...异常 ​ Dart 可以抛出和捕获异常,如果没有被捕获,则会抛出,最终导致程序终止运行 ​ 和 Java 不同,Dart 中的所有异常时非检查异常,方法不会声明它们抛出的异常,也不要求捕获任何异常 ​...} 未初始化的变量为 null 所有实例变量都隐式生成 getter 方法,非 final 的变量会生成 setter 方法 默认构造 没有声明构造时,Dart 会提供一个默认的构造 构造函数不被继承

    1.8K50

    『Flutter开发实战』一小时掌握Dart语言

    级联运算符(..)可以让你在同一个对象上连续调用多个对象的变量或方法。...上述代码中的 sb.write() 方法返回的是 void,返回值为 void 的方法则不能使用级联运算符。 备忘: 严格来说 .. 级联操作并非一个运算符而是 Dart 的特殊语法。...Setter 方法。...Getter 和 Setter 是一对用来读写对象属性的特殊方法,上面说过实例对象的每一个属性都有一个隐式的 Getter 方法,如果为非 final 属性的话还会有一个 Setter 方法,你可以使用...扩展方法 扩展方法是向现有库添加功能的一种方式。你可能已经在不知道它是扩展方法的情况下使用了它。例如,当您在 IDE 中使用代码完成功能时,它建议将扩展方法与常规方法一起使用。

    5.1K10

    Flutter Lesson 2: Dart 语法简单介绍

    这个需要注意,这个和JavaScript中的变量还是有很大的差别的 虽然Dart是强类型语言,但变量类型是可选的因为Dart可以自动推断变量类型 Dart支持顶层方法(如main方法),也支持类方法或对象方法...,同时你也可以在方法内部创建方法 Dart支持顶层变量,也支持类变量或对象变量 Dart中的私有变量用_开头,有点像JS中我们自定义函数的时候默认_开头的为私有变量 Dart中变量可以以字母或下划线开头...,后面跟着任意组合的字符或数字,不能使用$,这里面的$一般用于字符串拼接 变量 每一种编程语言都会有变量,Dart也不例外,不过Dart的区别就是其声明变量的方式有多种。...函数 Dart中的函数有三种 // 声明返回值类型 int int add1(int a, int b){ return a + b; } // 不声明返回值类型 add2(int a,...级联操作有点像JQ中的链式调用,不同点是JQ的链式调用需要上一个方法返回这个对象自身,而级联操作是不需要的,使用级联操作后,自动返回自身 如果是在web前端中,我们要获取一个元素,修改他的一些属性

    1.9K20

    从java到JavaScript(2):对比JavaGoSwiftRust看Dart

    Dart与Java的一些直观区别Dart和java以及C#都差不多,基本上不用学习可以直接使用,从这里可以你可以了解Dart有些特别之处。...当Dart需要一个布尔值的时候,只有true对象才被认为true,其他都是false。方法Dart是一个真正面向对象的语言,方法也是对象并且具有一种类型Function。可以使用上文说的可选方法。...所有函数都返回一个值,如果没有指定返回值,则 默认把语句 return null; 作为函数的最后一个语句执行。可以把方法当做参数调用另一个方法。方法也可以赋值给一个变量操作符??...,级联操作符,级联操作符 (…) 可以在同一个对象上 连续调用多个函数以及访问成员变量。——回顾jquery的链式调用,end()as、 is、 和 is!...minix,对于前段,react与vue框架,对这个应该非常熟悉setter和getter很多语言里面,为了方便获取属性都提供了setter和getter。其实他就是个语法糖。直接使用就可以。

    94910

    Dart dart:mirrors 库

    Dart中的基本反射,支持内省和动态调用。 内省是运行程序可以检查其自身结构的反射子集。例如,一个打印出任意对象的所有成员名称的函数。...动态调用是指在编译时不按字面指定评估代码的能力,例如调用一个其名称作为参数提供的方法(因为它在数据库中查找,或者由用户以交互方式提供)。...文档经常滥用带有Dart伪代码的符号,例如o.x(a),其中o和a被定义为对象;在这些情况下实际意味着o'.x(a')其中o'和a'是分别与o和a绑定的Dart变量。...当且仅当它是num,bool,String,一个可跨隔离序列化的对象列表,或者带有键和值的Map(这些键和值都可以跨隔离序列化)的实例时,对象才可以跨隔离进行序列化....MethodMirror MethodMirror反映Dart语言函数,方法,构造函数,getter或setter. Mirror Mirror 反映了一些Dart语言实体. [...]

    1.4K30

    Dart 基础知识笔记

    tour main() 函数是 Dart 程序的入口 main() 函数返回 void 并具有可选的 List 参数作为参数 所有对象都从 Object 类继承 Dart 是强类型 当您想明确地不希望有任何类型时...和 Error 类型,并且支持将任何非 null 对象作为异常抛出 某些语言(例如Java)将文件的组织与类的组织联系在一起-每个文件只能定义一个顶级类....Dart没有此限制 Dart 是一种具有类和基于 Mixin 的继承的面向对象语言 Object 的 runtimeType 属性返回对象类型 所有实例变量都会生成一个隐式的 getter 方法....非 final 的实例变量还会生成隐式的 setter 方法 Dart 中每个类都隐式定义一个接口 Dart 泛型在运行时会携带其类型信息 (相反,Java中 的泛型使用了 erasure ,这意味着在运行时会删除泛型类型参数...对于实现了 call() 方法的类,可以像调用函数一样调用该类的实例

    1.1K40

    flutter--Dart基础语法(一)注释、变量、数据类型、运算符

    即使变量是数字 类型默认值也是 null,因为在 Dart 中一切都是对象,数字类型 也不例外。...如果 num 及其亚类型找不到你想要的方法, 尝试查找使用 dart:math 库。 // 整数类型不包含小数点。...在 Dart 中通过调用就对象的 toString() 方法来得到对象相应的字符串。...这种方法很容易引发崩溃, 具体原因取决于特定的语言,字符集和操作。 2.4.8 Symbol 一个 Symbol 对象表示 Dart 程序中声明的运算符或者标识符。...严格的来讲, “两个点” 的级联语法不是一个运算符。 它只是一个 Dart 的特殊语法。 // 第一句调用函数 querySelector() , 返回获取到的对象。

    3K20

    Dart 学习之开发语言概览,带思维导图(二)

    库和可见性 使用import关键字导入 dart内置库,使用dart:xxxx 其他库,package:xxxx 以下划线(_)开头的成员仅在代码库中可见 每个 Dart 程序都是一个库,即便没有使用关键字...null 所有实例变量均会隐式地声明一个 Getter 方法 所有 非 final 变量均会隐式声明一个 Setter方法 void main(List args) { Point...p = Point(); print(p.x); // 调用x的 Getter p.y = 1; // 调用y的 Setter print(p.y); // 调用y的 Getter } class...你可以使用 get 和 set 关键字为额外的属性添加 Getter 和 Setter 方法 void main(List args) { Point p = Point(1, 2...必须在带有 async 关键字的 异步函数 中使用 await 使用 try、catch 以及 finally 来处理使用 await 导致的异常 await 表达式的返回值是一个 Future 对象

    1.7K20

    AngularDart4.0 指南- 依赖注入 顶

    本页面涵盖了DI是什么,为什么它是有用的,以及如何使用Angular DI。 运行实例(查看源代码)。 为什么使用依赖注入? 要理解为什么依赖注入如此重要,请考虑没有它的例子。...如果你想在你的Car上装一个不同品牌的轮胎怎么办? 太糟糕了。 你被锁定在Tires 班制造的任何品牌上。 这使得Car类不灵活。 现在每辆新车都有自己的引擎。 它不能与其他车辆共享一个引擎。...Bootstrap程序配置通常将应用程序包外部声明的服务保留给整个应用程序范围。这就是为什么不鼓励使用引导注册应用程序特定服务的原因。 首选的方法是在应用组件中注册应用服务。...它没有任何自己的依赖关系。 如果它有一个依赖呢? 如果通过日志记录服务报告其活动呢? 你会应用相同的构造函数注入模式,添加一个带有Logger参数的构造函数。...一个关键的好处是强大的静态检查:如果你拼错一个属性名称或给它分配一个错误类型的值,你会被提前警告。 Dart级联符号(..)提供了初始化配置对象的便捷方法。

    5.7K20

    Dart 中的封装 继承 多态

    封装 1.1 概念 封装是面向对象编程中的一个基本概念,它的主要目的是将对象的状态(数据)和行为(方法)组合在一起,并隐藏对象的内部实现细节,只暴露必要的接口给外部使用。...控制访问:通过公共方法(通常称为 getter 和 setter),外部代码可以安全地访问或修改内部数据。 提高安全性:封装防止外部代码随意修改对象的状态,从而保护数据的完整性和安全性。...使用 Getter 和 Setter Dart 提供了 getter 和 setter 方法,以便访问和修改私有属性。...同样,在面向对象编程中,多态性是指对象具有多种形式的能力。 3.1 Dart 中的多态实现方式 方法重写(Method Overriding):子类重写父类的方法。...即使通过父类类型的引用来调用 speak(),具体执行的仍然是子类中重写的方法,这就是多态的表现。 注意 如果不写@override,程序仍会运行。但是,写@override是一种很好的做法。

    7710

    Dart 运算符

    Dart 支持下表中所示的运算符。该表按从高到低的顺序显示了 Dart 的运算符结合性和 运算符优先级 ,这只是 Dart 运算符关系的 近似值 。您可以将许多这些 运算符实现为类成员 。...以下是 == 运算符的工作原理:如果 x 或 y 为 null,则如果两者都为 null,则返回 true,如果只有一个为 null,则返回 false。...返回在 x 上调用 == 方法并使用参数 y 的结果。(没错,像 == 这样的运算符是在其第一个操作数上调用的方法。有关详细信息,请参阅 运算符 。)以下是使用每个等式和关系运算符的示例:一起使用。...sb.write() 调用返回 void,您不能在 void 上构建级联。注意严格来说,级联的“双点”表示法不是运算符。它只是 Dart 语法的一部分。

    7410
    领券