gpt4 book ai didi

dart - 根据DartLangSpec-v2.2,类中的静态和非静态变量可以具有相同的名称

转载 作者:行者123 更新时间:2023-12-03 04:00:15 24 4
gpt4 key购买 nike

一个类有几个作用域:

•类型参数作用域,如果该类不是通用类,则为空(14)。
类的类型参数范围的包围范围是
类声明的范围。
•静态范围。类的静态范围的封闭范围是
类型的参数范围(14)。
•实例范围。类实例范围的封闭范围是
类的静态范围。
https://dart.dev/guides/language/specifications/DartLangSpec-v2.2.pdf第27页

class Foo {
static var x;
var x;
}

我认为根据文件应该可以。但是得到编译错误。我对范围的理解错了吗?如果我错了,可以请您说明一下Dart范围和 namespace 之间的区别。

最佳答案

范围/ namespace 几乎与您期望的一样。它们主要用于查找,而不是解决冲突。大部分冲突解决方案在规范中的其他地方都进行了明确处理(尽管有些规则只是根据您不能两次将同一名称引入作用域的规则来处理)。

例如,对类的限制不仅仅是基于范围的限制,包括:

  • 除非一个是setter而另一个是getter,否则一个类不得声明两个具有相同基名的成员。
  • 类不得声明与继承成员具有相同基本名称的静态成员。
  • 类不得声明与该类同名的类型参数。
  • 类不得声明其基名与该类的名称或该类的类型参数相同的成员。

  • 您的示例未通过第一项。

    关于dart - 根据DartLangSpec-v2.2,类中的静态和非静态变量可以具有相同的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57799894/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com