Dart _internal的语义是什么?
我一直在以下示例中看到对_internal的引用:Dart _internal的语义是什么?,dart,Dart,我一直在以下示例中看到对_internal的引用: 类符号{ 最后的字符串名; 静态映射缓存; 工厂符号(字符串名称){ 如果(_cache==null){ _缓存={}; } if(_cache.containsKey(名称)){ 返回_缓存[名称]; }否则{ 最终符号=新符号。\u内部(名称); _cache[name]=符号; 返回符号; } } 符号。_内部(此名称); } 我从代码中收集到,它是一个可私人访问的构造函数。最后一行符号。\u内部(此.name)似乎有点混乱,因为它似乎
类符号{
最后的字符串名;
静态映射缓存;
工厂符号(字符串名称){
如果(_cache==null){
_缓存={};
}
if(_cache.containsKey(名称)){
返回_缓存[名称];
}否则{
最终符号=新符号。\u内部(名称);
_cache[name]=符号;
返回符号;
}
}
符号。_内部(此名称);
}
我从代码中收集到,它是一个可私人访问的构造函数。最后一行符号。\u内部(此.name)
似乎有点混乱,因为它似乎是类主体中的一条语句,而不是方法主体中的一条语句,这让我相信它实际上是没有方法主体的内部构造函数定义
我的假设正确吗?内部的\u内部的构造只是给类私有的构造函数的一个名称(名称不必是。\u内部的可以使用任何类创建私有构造函数。\u someName构造) 例如,以下代码仅允许您使用缓存构造函数从类外部创建新人员:
班级人员{
最后的字符串名;
静态映射缓存;
工厂人员(字符串名称){
如果(_cache==null){
_cache=newmap();
}
如果(_cache[name]==null]){
_cache[name]=新人员。\u内部(姓名);
}
返回_缓存[名称];
}
内部人员(姓名);
}
通常,Dart将任何\u构造视为类或包含它的库的私有。例如,您可以定义如下的全局函数:
\u globalToThisLibaryOnly(){
打印(“只能在此库中全局调用”);
}
它可以从定义它的库中的任何源文件调用。再次感谢,Lars。这很有帮助。还有一些事情我还不完全理解,比如,构造函数可以选择有一个方法体?定义为final的类成员只能在构造函数的参数列表中设置,而不能在构造函数体中设置?这些仍然让我困惑不解的事情。除了类。它也可以是类_