【问题标题】:final instance variable can be reassigned to some other value using const in dartfinal 实例变量可以在 dart 中使用 const 重新分配给其他值
【发布时间】:2019-05-28 14:02:27
【问题描述】:

有谁知道为什么下面的代码在 dart 中有效。 final 关键字用于定义常量变量。但下面的代码工作方式略有不同。如果我们使用具有不同值的const,它可以正常工作而不会出错。

void main() {
    ExampleFinal exampleFinal = new ExampleFinal();
}

class ExampleFinal() {
    final a = 5;
    ExampleFinal() {
        // The below statement will not create any error. 
        // But if you are remove const in below line it'll show a compile time error.
        const a = 6;
        print(a); // Prints 6
    }
}

这是 dart 中的错误还是功能?文件中也没有提到。

【问题讨论】:

    标签: dart


    【解决方案1】:
    const a = 6;
    

    创建一个隐藏final a = 5;的新变量

    这是可能的,因为{...} 在构造函数主体中创建了一个新范围。

    如果在构造函数末尾添加

    print(this.a); 
    

    它将打印5

    【讨论】:

    • 看起来很有趣。但它也可能令人困惑。而且文档中也没有提到这样的事情!
    • 好久没查文档了。变量之前的类型和/或varconstfinal 总是创建一个新变量。在同一范围内,如果存在名称冲突,则会出现错误。我使用过的大多数语言的行为都非常相似。
    猜你喜欢
    • 2018-12-23
    • 1970-01-01
    • 2019-09-12
    • 2018-10-24
    • 1970-01-01
    • 2021-11-14
    • 2015-08-24
    • 2021-06-18
    • 1970-01-01
    相关资源
    最近更新 更多