|
|
|
@ -8,15 +8,29 @@
|
|
|
|
|
1. Scope是Variable的Container
|
|
|
|
|
2. Scope可以共享
|
|
|
|
|
|
|
|
|
|
## Scope 是一个Variable的Container
|
|
|
|
|
## Scope is a Container of Variables.
|
|
|
|
|
|
|
|
|
|
解释下为啥Scope是Variable的container。解释下面几个小点的原因。
|
|
|
|
|
* Scope contains Variables as it's data member.
|
|
|
|
|
* Scope contains methods that are used to manage Variables, such as Create/Get/Delete.
|
|
|
|
|
* every variable only belong to one certain Scope.
|
|
|
|
|
* Scope should destruct all Variables within it when itself is destructed.
|
|
|
|
|
* Variable can only be created by Scope.
|
|
|
|
|
* Variable can only be got from Scope.
|
|
|
|
|
|
|
|
|
|
* Scope do not contains Operators and have no information to run them.
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
class Scope {
|
|
|
|
|
public:
|
|
|
|
|
Variable* CreateVariable(const std::string& name);
|
|
|
|
|
const Variable* GetVariable(const std::string& name) const;
|
|
|
|
|
bool DeleteVariable(const std::string& name);
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
std::unordered_map<std::string, std::shared_ptr<Vairable>> variable_map_;
|
|
|
|
|
};
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
* 他只包含variable
|
|
|
|
|
* 每一个variable也只属于一个Scope
|
|
|
|
|
* 每一个Scope析构的时候,会同时析构variable
|
|
|
|
|
* 只能通过Scope创建Vairable。
|
|
|
|
|
* 只能通过Scope获取Variable。
|
|
|
|
|
## Scope 可以被继承或者叫共享
|
|
|
|
|
|
|
|
|
|
解释下Scope如何被共享,如何查找Variable的算法。
|
|
|
|
|