Squirrel中的类与实例
来源:互联网 发布:深圳大数据协会 编辑:程序博客网 时间:2024/05/01 11:44
<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]><![endif]-->
Squirrel作为一个开源项目,其诞生收到了著名的脚本语言LUA的影响。和LUA不同的是,Squirrel提供了一种类似面向对象语言的表达能力,同时,它在很多语言的细节处理上与C或者C++更加接近。当然,由于其本质上仍然是以表格为基础的动态类型语言,所以它的面向对象能力常常和我们所习惯的C++的面向对象有着很大的不同。首先,它的所谓的类,其实也是一个表格,而类的实例化大致相当于类表格的浅拷贝。因此,如果在类中包含了表格、数组或者其他类的实例的话,在创建类对象的时候,类对象中对应的项目和类中引用的是相同的表格、数组或实例,也就是说,虽然没有把这些成员定义为静态,但他们的行为就相当于C++中的类的静态成员。如:
class Base
{
embeded_table=
{
entry = 0;
}
}
local t1 = Base();
local t2 = Base();
t1.embeded_table.entry = 1;
print(t2.embeded_table.entry);
上面这段代码的输出是1,因为在类中嵌入的表格,实际上是对表格对象的引用,在生成类Base的实例t1, t2时,两个实例中的embed_table引用的实际上是同一份表格。
如果希望两个实例中各有自己的表格副本,则可以使用如下代码:
class Base
{
embeded_table= null;
constructor()
{
embeded_table = {
entry = 0;
}
}
}
local t1 = Base();
local t2 = Base();
t1.embeded_table.entry = 1;
print(t2.embeded_table.entry);
上面的代码在创建类实例的时候复制类的成员的时候表格还未创建,而在构造函数中则为当前的实例创建专属实例的表格。这个类可以算是C++中的类的一个不怎么优雅的模拟,真正可以说是生成实例的一个模板了。
- Squirrel中的类与实例
- Phoenix ,SQuirrel 与Hbase 搭建
- JavaScript 中的"类"与"实例"
- Squirrel脚本中的table和array
- Squirrel脚本中的table和array
- Squirrel脚本中的table和array
- Squirrel脚本中的table和array
- Squirrel脚本中的table和array
- Squirrel脚本中的table和array
- Squirrel脚本中的table和array
- Squirrel脚本中的table和array
- SQuirreL SQL Client的安装与配置
- squirrel sql工具与hive的连接
- java中的类方法与实例方法
- java 中的类与接口定义实例
- OC中的类方法与实例方法
- OC中的类方法与实例方法
- python中的类属性与实例属性
- 【计算几何】zjoi2008 risk
- 手机
- 被触动心灵的感觉.....
- 写自己的ls命令
- Thinking in Java笔记7
- Squirrel中的类与实例
- 3D模型的姿态单位化
- flex显示数字时钟和日期
- oracle set serveroutput on
- 在iPhone程序上读取PDF文件
- POJ 1845 Sumdiv
- 新站长如何选择合适的CMS
- POJ题目分类
- 用Crosstool-0.43制作交叉交叉工具链的一些心得!(上)