【问题标题】:Is it necessary to use underscore (_) variable inside functions in Dart?Dart 中的函数内部是否需要使用下划线 (_) 变量?
【发布时间】:2021-02-05 02:09:27
【问题描述】:

变量/函数名称以下划线“_”开头,表示它是 Dart 语言中的私有变量/函数。众所周知。

如果在函数内部使用下划线变量怎么办?

是否需要在函数中(而不是在类中)声明一个带下划线的变量来表示该变量只在函数中使用?还是因为声明的变量只能在函数中使用是不言而喻的,所以使用下划线前缀只是多余的东西? (或命名约定?)(当函数没有任何内部函数时)

带下划线:

void sample() {
 var _something = getSomething();
 doSomethingWith(_something);
 //use _something
}

没有下划线:

void sample() {
 var something = getSomething();
 doSomethingWith(something);
 //use something
}

另外,它们之间是否存在与性能相关的差异?

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    如果在函数内部使用下划线变量怎么办?

    Dart's official style guide expressly advises against doing that(强调我的):

    对于局部变量、参数或库前缀没有“私有”的概念。当其中一个的名称以下划线开头时,它会向读者发送一个令人困惑的信号。 为避免这种情况,请勿在这些名称中使用前导下划线

    至于您帖子中的另一个问题:

    是否必须在函数中(不是在类中)声明一个带下划线的变量来表示该变量只在函数中使用?

    不,在函数内声明的所有变量自然都被限制在该函数的范围内。添加注释以说明本地是“私有”既多余又不正确(因为本地不是“私有”,因为本地不共享)。

    void sample() {
     var _something = getSomething();
     doSomethingWith(_something);
     //use _something
    }
    

    在本例中,_something 实际上并未“共享”,因为doSomethingWith传递了_something 的副本:它没有引用或指向_something的指针。

    【讨论】:

    • 感谢您提供快速而模范的答案,并提供了一个不错的官方链接。
    猜你喜欢
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 2011-10-30
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    相关资源
    最近更新 更多