gpt4 book ai didi

dart - _internal 的语义是什么?

转载 作者:行者123 更新时间:2023-12-01 17:47:19 26 4
gpt4 key购买 nike

我不断在如下示例中看到对 _internal 的引用:

class Symbol {
final String name;
static Map<String, Symbol> _cache;

factory Symbol(String name) {
if (_cache == null) {
_cache = {};
}

if (_cache.containsKey(name)) {
return _cache[name];
} else {
final symbol = new Symbol._internal(name);
_cache[name] = symbol;
return symbol;
}
}

Symbol._internal(this.name);
}

我从代码中了解到它是一个可私有(private)访问的构造函数。最后一行 Symbol._internal(this.name); 似乎有点令人困惑,因为它似乎是类体内的语句,而不是方法体内的语句,让我相信它实际上是内部构造函数没有方法体的定义。

我的假设正确吗?

最佳答案

_internal 构造函数只是一个通常为类私有(private)的构造函数指定的名称(该名称不需要是 ._internal 您可以创建一个私有(private)构造函数使用任何 Class._someName 构造)。

例如,以下代码仅允许您使用缓存构造函数从类外部创建新人员:

class Person {

final String name;
static Map<String,Person> _cache;

factory Person(String name) {
if(_cache === null) {
_cache = new Map<String,Person>();
}
if(_cache[name] === null]) {
_cache[name] = new Person._internal(name);
}
return _cache[name];
}

Person._internal(this.name);
}

一般来说,Dart 将任何_construction视为类或包含它的库的私有(private)。例如,您可以像这样定义全局函数:

_globalToThisLibaryOnly() {
print("can only be called globally within this #library");
}

可以从定义它的库中的任何文件调用它。

关于dart - _internal 的语义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11112506/

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