在 Dart 中将库分成几部分和隐私

Breaking a library into parts and privacy in Dart

我正在尝试将库分解成多个部分,但无法从部分访问库的私有元素。

例如,假设我有一个名为 stack.dart 的文件,其中包含以下内容:

library stack;

final _stack = [];

get isEmpty => _stack.isEmpty;
get top => isEmpty ? throw "Empty stack!" : _stack.last;
get pop => isEmpty ? throw 'Empty stack!' : _stack.removeLast();
push(elt){
  _stack.add(elt);
  return elt;
}

我还有另一个文件,内容如下:

part of stack;

display(){
  print(_stack); // can't access _stack from here!
}

这是正常的还是我做错了什么?

_stack 是库还是文件私有的?

您的问题是您忘记使用 part 关键字将您的文件包含到库中:

lib.dart:

library test_lib;
part 'part.dart';

final _private = 'This is private';

part.dart:

part of test_lib;

void test() {
  print(_private); // I have access to the _private variable defined in lib.dart
}