变量/函数名称以下划线“_”开头,表示它是 Dart 语言中的私有变量/函数。这非常出名。
如果在函数内部使用下划线变量会怎样?
是否有必要在函数中(而不是在类中)使用声明下划线变量来表示该变量仅在函数中使用?或者因为不言而喻,声明的变量只能在函数中使用,因此使用下划线前缀只是一个多余的事情?(或者为了命名约定?)(当函数没有任何内部函数时)
带下划线:
void sample() {
var _something = getSomething();
doSomethingWith(_something);
//use _something
}
Run Code Online (Sandbox Code Playgroud)
没有下划线:
void sample() {
var something = getSomething();
doSomethingWith(something);
//use something
}
Run Code Online (Sandbox Code Playgroud)
另外,它们之间有性能相关的差异吗?
\n\n如果在函数内部使用下划线变量会怎样?
\n
Dart 的官方风格指南明确建议不要这样做(强调我的):
\n\n\n对于局部变量、参数或库前缀,没有 \xe2\x80\x9cprivate\xe2\x80\x9d 的概念。当其中一个名称以下划线开头时,就会向读者发出令人困惑的信号。为了避免这种情况,请不要在这些名称中使用前导下划线。
\n
至于你帖子中的另一个问题:
\n\n\n是否有必要在函数中(而不是在类中)使用声明下划线变量来表示该变量仅在函数中使用?
\n
不,函数内声明的所有变量自然都限制在该函数的范围内。添加注释来说明本地变量是“私有的”既多余又不正确(因为本地变量不是“私有的”,因为本地变量不共享)。
\nvoid sample() {\n var _something = getSomething();\n doSomethingWith(_something);\n //use _something\n}\nRun Code Online (Sandbox Code Playgroud)\n在此示例中,_something实际上并不“共享”,因为doSomethingWith传递了的副本_something:它没有指向 的引用或指针_something。
| 归档时间: |
|
| 查看次数: |
4161 次 |
| 最近记录: |