在学习 Dart 时,我注意到私有属性以下划线开头。那么私有财产是什么意思呢?
class OfficialName extends Name {
// Private properties begin with an underscore
final String _title;
OfficialName(this._title, String first, String last)
: super (first, last);
@override
String toString(){
return 'S_title. ${super.toString()}';
}
}
Run Code Online (Sandbox Code Playgroud)
私有属性是那些只能在声明它们的文件中访问的属性。换句话说,只有 dart 文件中找到这些私有属性的 dart 代码“知道”这些私有属性。
考虑下面的例子
在lib/foo.dart
class Foo {
var _foo = 'foo';
var bar = 'bar';
}
main() {
print(Foo()._foo); // foo
print(Foo().bar); // bar
}
Run Code Online (Sandbox Code Playgroud)
然后在lib/bar.dart
import './foo.dart';
main() {
// print(Foo()._foo); // this won't work
print(Foo().bar); // bar
}
Run Code Online (Sandbox Code Playgroud)
运行这两个文件将显示注释结果。但是如果该print(Foo()._foo);行在 中取消注释bar.dart,编译器将抛出一个错误,即没有为类“Foo”定义 getter '_foo'。这是因为类_foo的属性Foo对于文件来说是私有的foo.dart。
在 Dart 中,每个文件都是一个库。因此,隐私或私有财产的范围仅限于每个图书馆是有道理的。
要创建私有属性,无论是字段还是方法,只需在其名称前添加下划线即可_。
因此,在编码时,如果您认为其他 dart 文件(或库)不应该访问某些属性(可能是因为隔离逻辑),那么您可以将它们设为私有(通过添加下划线前缀_)。
| 归档时间: |
|
| 查看次数: |
1243 次 |
| 最近记录: |