Squirrel 文档翻译(Execution Context)
来源:互联网 发布:淘宝客用手机可以做吗 编辑:程序博客网 时间:2024/06/05 14:42
执行上下文:
所谓的执行环境,是指函数执行的堆栈帧和函数的上下文环境(this),函数的堆栈帧是栈的一部分,用来存放函数内部局部变量存放的地方。函数的上下文环境是被函数的调用者作为隐含参数传递给函数(看Functions). 在执行过程中,函数体透明的引用他的执行上下文环境,也就是一个简单的标识符既可以指向局部变量,也可以指向一个环境对象槽。全局变量需要特定的语法。环境对象可以被this显式的访问。
变量:
Squirrel中有两类变量,局部变量和表/数组槽。因为全局变量存放在一个表中,所以它是槽。
一个简单标识符可以指向局部变量或者环境对象中的槽。
derefexp := id;
_table["foo"]_array[10]
对于表,我们可以用“.”语法:
derefexp := exp '.' id
_table.foo
对于一个标识符,Squirrel会首先检查它是否是局部变量(函数参数或者局部标量),如果不是,它会检查该标识符是否是环境对象的成员(this)。
比如:
function testy(arg)
{
local a=10;
print(a);
return arg;
}
会访问局部变量a,打印出10
function testy(arg)
{
local a=10;
return arg+foo;
}
这种情况,foo等同于“this.foo”或者this["foo"].
全局变量存放在被称为“root table”的表中。通常情况下,在全局范围里,环境对象就是root table。但是可以在其他的范围里显式的访问全局表,槽命必须加前缀'::' (::foo).
exp:= '::' id
比如
function testy(arg)
{
local a=10;
return arg+::foo;
}
访问全局变量foo。
然而(自从squirrel 2.0),如果一个变量不是局部变量并且在“this”对象中找不到,Squirrel会在全局表中查找。
function test() {
foo = 10;
}
等同于:
function test() {
if("foo" in this) {
this.foo = 10;
}else {
::foo = 10;
}
}
- Squirrel 文档翻译(Execution Context)
- Squirrel 文档翻译( Introduction )
- Squirrel 文档翻译( 目录)
- Squirrel 文档翻译(Statements)
- Squirrel 文档翻译( Class )
- Squirrel 文档翻译( Squirrel嵌入-索引)
- Squirrel 文档翻译( Squirrel嵌入-初始化)
- Squirrel 文档翻译( Squirrel嵌入-初始化)
- Squirrel 文档翻译( Lexical Structure )
- Squirrel文档翻译(表达式1)
- Squirrel文档翻译(元方法2)
- Squirrel文档翻译(弱引用和委托)
- Squirrel文档翻译(内置函数-全局变量和函数)
- Squirrel文档翻译(内置函数-默认委托)
- squirrel英文文档
- Unity说明文档翻译-Script Execution Order Settings
- execution context and scope
- Android官方文档翻译——Context(一)
- 1数据库管理系统概论
- 在Google Map的地图轨迹上添加箭头
- 2009-6-13,5/27/2010
- 2009-11-25,2009-6-14
- 迷茫的女生
- Squirrel 文档翻译(Execution Context)
- PHP在Apache中两种工作方式的区别(CGI模式、Apache 模块DLL)
- c++编译器和连接器介绍
- 文件的打开方式
- poj 3278 Catch That Cow(第一道广搜题,(*^__^*) 嘻嘻……)
- 2009-6-23,
- Hibernate 二级缓存 使用
- Apache配置PHP模块
- 7/10/2008,2008-4-25