首先變數表應該採取一種將變數名對應到變數的方法,這種方法大致兩種,一種是將變數名parse時hash成數字,一種是直接建立string->value的map。
我們使用鍊錶結構,每乙個塊狀作用域指向父作用域,介面實現getvar()方法,遞迴查詢變數,利用exception機制處理未定義變數行為。
class variabletable
variabletable(variabletable * t)
void definevar( int name )
value & getvar( const
int & name )
else
}~variabletable()
};
我們完全可以採用類似思路。
const
int __proto__ = getnameint("__proto__");
class object
value & __getvar(int name)
}inline value & getvar(int name)
catch (undefinedvariableexception)
}~object()
};
變數的作用域
1 int i for i 0 i 10 i text console.writeline last text output in loop text 失敗,字串變數text是for迴圈的區域性變數,這段 不能編譯,因為在該迴圈外部呼叫的console.writeline 試圖使用該變數text,這...
變數的作用域
首先定義全域性變數和區域性變數 如下 import import scope.h int gglobalvar 300 int main int argc,const char argv return 0 2015 04 01 14 52 12.123 extern 1924 303 300 201...
變數的作用域
1.變數的作用域指明可訪問該變數的一段 宣告乙個變數的同時也就指明了變數的作用域。2.作用域的基本規則 1 引數宣告的作用域是宣告方法所在的方法體 2 區域性變數在方法或方法中的一塊 中宣告,它的作用域為它所在的 塊 整個方法或方法中的某塊 3 在帶標號的break和continue語句中,標號的作...