首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何区分dart构造函数初始化列表中相同的变量名?

如何区分dart构造函数初始化列表中相同的变量名?
EN

Stack Overflow用户
提问于 2021-06-29 09:41:27
回答 1查看 186关注 0票数 1

因为容器小部件有一个约束实例变量。但是构造函数也有一个约束参数。

在initializor列表中,我们可以看到如下代码:

代码语言:javascript
复制
constraints = (****) constraints;

那么,我们如何知道哪些约束是对实例变量的引用,哪些约束是对函数参数的引用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-29 10:18:41

名称冲突在构造函数初始化程序列表中不是问题。每个初始化的左侧可能只是一个成员变量.来自Dart语言规范

初始程序列表 初始化程序列表以冒号开头,由以逗号分隔的单个初始化程序列表组成. ..。 表单v= e的初始化器与表单.v=e的初始化器等效,这两种表单都称为实例变量初始化器。

同时,this因此永远不能引用一个成员变量。因此:

代码语言:javascript
复制
class Foo {
  int x;

  Foo(int x) : x = x;
}

没有歧义:成员变量x是从x参数初始化的。

但是,名称冲突在构造函数体中可能是一个问题,但是:

代码语言:javascript
复制
class Foo {
  int x;

  Foo(int x) : x = x {
    x *= 10; // This modifies the local `x` parameter.
  }
}

在这种情况下,如果构造函数体需要使用成员变量,而不是同名的参数,则必须小心显式使用this.x

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68176209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档