code: public void set(Object key, Object value) {
  		for (Scope cur=this; true; cur=cur.parent) {
  			// HashMap 允许有 null 值 value，必须要做 containsKey 判断
  			if (cur.data != null && cur.data.containsKey(key)) {
  				cur.data.put(key, value);
  				return ;
  			}
  			
  			if (cur.parent == null) {
  				if (cur.data == null) {			// 支持顶层 data 为 null 值
  					cur.data = new HashMap();
  				}
  				cur.data.put(key, value);
  				return ;
  			}
  		}
  	}
docs: 设置变量
  自内向外在作用域栈中查找变量，如果找到则改写变量值，否则将变量存放到顶层 Scope