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

<h3>结构定义的语法</h3>
<p>结构类型是一种用户定义的复合类型。结构可由一些不同类型的成员组成。</p>
<p>struct <em>structName</em>
{ <em>memberList</em>
};</p>
<p>实例:</p>
<pre>struct Person<br>
{<br>
String name;<br>
int age;<br>
float weight;<br>
};<br><p>每个结构成员的类型可以是基本类型、其它VSL结构或C/C++结构/类。这些类型的数组成员也被支持。</p>
<pre>struct Car<br>
{<br>
Entity3D entity;<br>
Person passengers[4];<br>
float weight;<br>
Vector velocity; <br>
};<br><p>
要访问结构的成员,你得使用 "." 运算符。</p>
<pre>void SetPerson(Person p, String name, int age, float weight)<br>
{<br><span>// Set name</span>
<br>
if (name == "")<br>
p.name = "Unknown";<br>
else<br>
p.name = name;<br><br><span>// Set age</span>
<br>
if (age < 0)<br>
age = 1;<br>
p.age = age;<br><br><span>// Set weight</span>
<br>
if (weight < 0)<br>
weight = 40;<br>
p.weight = weight;<br>
}<br><br>
void main()<br>
{<br>
Car car;<br>
car.entity = null;<br>
car.velocity.Set(0,0,0);<br><br>
car.weight = 1500;<br><br><span>// Set persons</span>
<br>
for (int i = 0; i < 4; ++i)<br>
{<br>
String name("Passengers");<br>
name += i;<br>
SetPerson(car.passengers[i], name, rand()*20+20, rand()*30+60);<br><br><span>// Add person weight to the car weight</span>
<br>
car.weight += car.passengers[i].weight;<br>
}<br>
}<br><h3>
<a name="TOC-2"></a>
在结构上使用运算符 =, == 及 != <br>
</h3>
<p>当在结构上使用 =, == 及 != 运算符时,VSL编译器为每个具有这种被重载运算符的成员调用合适的运算符。</p>
<p>对于那些没有重载运算符的成员,这个代码会产生:</p>
<p>Operator =<br>
Code is generated to copy memory.</p>
<p>Operator == and !=<br>
Code is generated to compare memory.</p>
<p>实例:</p>
<pre>Person p1;<br>
Person p2;<br><br>
String name("john");<br>
SetPerson(p1, name, 30, 75);<br><pre>p2 = p1;
<p>
等价于:</p>
<pre>p2.name = p1.name; <span>// call the String operator =</span>
<br>
p2.age = p1.age;<br>
p2.weight = p1.weight;<br><pre>p2 == p1;
<p>
等价于:</p>
<pre>p2.name == p1.name; <span>// call the String operator ==</span>
<br>
p2.age == p1.age;<br>
p2.weight == p1.weight;<br><pre>p2 != p1;
<p>
等价于:</p>
<pre>p2.name != p1.name; <span>// call the String operator !=</span>
<br>
p2.age != p1.age;<br>
p2.weight != p1.weight;<br></pre></pre></pre></pre></pre></pre></pre></pre></pre></pre>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值