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;
目录
相关文章
|
7月前
|
缓存 网络架构
计算机网络基础知识和术语(二)---性能指标
计算机网络基础知识和术语(二)---性能指标
92 1
|
网络架构
网络应用基础交换机的基础操作(NETBASE第六课)(二)
网络应用基础交换机的基础操作(NETBASE第六课)(二)
168 0
|
8月前
|
安全 网络安全 数据安全/隐私保护
网络拓扑结构入门快速介绍
网络拓扑结构入门快速介绍
|
网络安全
网络应用基础交换机的基础操作(NETBASE第六课)(一)
网络应用基础交换机的基础操作(NETBASE第六课)(一)
146 0
网络应用基础交换机的基础操作(NETBASE第六课)(三)
网络应用基础交换机的基础操作(NETBASE第六课)(三)
120 0
|
数据安全/隐私保护 网络架构
二十二、局域网基本概念和体系结构
二十二、局域网基本概念和体系结构
二十二、局域网基本概念和体系结构
|
监控 芯片 内存技术
通俗易懂的带你解读inout双向端口【Verilog高级教程】
通俗易懂的带你解读inout双向端口【Verilog高级教程】
通俗易懂的带你解读inout双向端口【Verilog高级教程】
|
芯片 开发者 ice
3.2基础概念:硬件调试器概念及配置方法|学习笔记
快速学习3.2基础概念:硬件调试器概念及配置方法
3.2基础概念:硬件调试器概念及配置方法|学习笔记
|
网络架构
第四章 高级网络应用-子网划分(下)
前言:学习子网划分,判断有限IP 和配IP特殊注意点 地址汇总
112 0
第四章 高级网络应用-子网划分(下)
|
Web App开发 缓存 JavaScript
JavaScript 工作原理之十二-网络层探秘及如何提高其性能和安全性
正如在之前关于渲染引擎的文章中所讲的那样,我们相信好的和伟大的 JavaScript 开发者之间的差别在于后者不仅仅只是理解了语言的具体细节还了解其内部构造和运行环境。
1494 0