Virtools脚本语言(VSL)教程 - 结构

简介: 结构定义的语法 结构类型是一种用户定义的复合类型。结构可由一些不同类型的成员组成。 struct structName { memberList }; 实例: struct Person { String name; int age; float weight; }; 每个结构成员的类型可以是基本类型、其它VSL结构或C/C++结构/类。

结构定义的语法

结构类型是一种用户定义的复合类型。结构可由一些不同类型的成员组成。

struct structName { memberList };

实例:

struct Person
{
String name;
int age;
float weight;
};

每个结构成员的类型可以是基本类型、其它VSL结构或C/C++结构/类。这些类型的数组成员也被支持。

struct Car
{
Entity3D entity;
Person passengers[4];
float weight;
Vector velocity;
};

要访问结构的成员,你得使用 "." 运算符。

void SetPerson(Person p, String name, int age, float weight)
{
// Set name
if (name == "")
p.name = "Unknown";
else
p.name = name;

// Set age
if (age < 0)
age = 1;
p.age = age;

// Set weight
if (weight < 0)
weight = 40;
p.weight = weight;
}

void main()
{
Car car;
car.entity = null;
car.velocity.Set(0,0,0);

car.weight = 1500;

// Set persons
for (int i = 0; i < 4; ++i)
{
String name("Passengers");
name += i;
SetPerson(car.passengers[i], name, rand()*20+20, rand()*30+60);

// Add person weight to the car weight
car.weight += car.passengers[i].weight;
}
}

在结构上使用运算符 =, == 及 !=

当在结构上使用 =, == 及 != 运算符时,VSL编译器为每个具有这种被重载运算符的成员调用合适的运算符。

对于那些没有重载运算符的成员,这个代码会产生:

Operator =
Code is generated to copy memory.

Operator == and !=
Code is generated to compare memory.

实例:

Person p1;
Person p2;

String name("john");
SetPerson(p1, name, 30, 75);
p2 = p1;

等价于:

p2.name = p1.name; // call the String operator =

p2.age = p1.age;
p2.weight = p1.weight;
p2 == p1;

等价于:

p2.name == p1.name; // call the String operator ==

p2.age == p1.age;
p2.weight == p1.weight;
p2 != p1;

等价于:

p2.name != p1.name; // call the String operator !=

p2.age != p1.age;
p2.weight != p1.weight;
目录
相关文章
|
5月前
|
BI
如何使用动态 ABAP 程序生成技术,对 ABAP 系统标准的报表行为进行微调试读版
如何使用动态 ABAP 程序生成技术,对 ABAP 系统标准的报表行为进行微调试读版
|
前端开发 JavaScript IDE
封装库/工具库中重要概念之编辑器
在前端开发中,编辑器(Code Editor)是一项非常重要的工具,它可以帮助我们更加高效地编写和编辑代码。虽然市面上已经有了许多强大的编辑器,但是使用封装库/工具库可以帮助我们更加方便地集成编辑器到我们的项目中
114 0
x3d
|
程序员 C++ 开发者
[译]Godot系列教程四 - 编写脚本
编写脚本(Scripting) 简介 关于无需编程即可创建视频游戏的那些工具的谈论有很多。不用学习编程知识对很多独立开发者来说就是一个梦想。这种需求 - 游戏开发者、甚至在很多公司内部,希望对游戏流程拥有更多控制权,已经有很长一段时间了。
x3d
1258 0
x3d
Virtools脚本语言(VSL)教程 - 枚举
enum关键字指定了一个枚举类型。枚举类型是一种用户定义的类型,由一套叫做计数器(enumerator)的赋之以名称的常量组成。缺省情况下,第一个计数器有一个为0的值,每个后续的计数器都比前一个的值更大(除非你显示地为特定计数器指定一个值)。
x3d
946 0
x3d
|
C++
Virtools脚本语言(VSL)教程 - 核心语言特性
语言基础与面向过程方式 值、类型与变量 表达式与运算符 语句 函数 枚举 结构 面向对象方式 在VSL中使用C++类 绑定新的C/C++功能
x3d
806 0
x3d
|
开发工具
通过实例学习Virtools脚本语言VSL - 解析字符串
该习题演示解析字符串及用字符串中包含的信息填充数组(Array)。 开始一个新的作品并创建一个数组(Array)。把数组重命名为 "Players" (没有引号) 并添加三个列(column),如下命名 - 列类型: NickNames - String Age - Integer Score - Integer. 在Level下创建新脚本,并添加一个Run VSL BB。
x3d
816 0
下一篇
无影云桌面