MaxScript嵌套结构体定义疑问:变量名与分号规则解析
MaxScript嵌套结构体的两个疑问解答
1. 嵌套结构体的变量名必须与结构体名称一致?
这是个误解——完全不需要一致。示例里的test2只是刚好同时作为成员变量名和嵌套结构体的类型名而已,你可以给它们起不同的名字,比如:
testStruct = struct test ( var1 = "a", myNestedStruct = struct test2 ( var3 = "c", var4 = "d" ), var2 = "b" )
这里myNestedStruct是父结构体的成员变量名,test2是嵌套结构体的类型名,两者互不影响。你通过testStruct.myNestedStruct就能访问嵌套的结构体实例,类型名test2则用来标识这个结构体的类型(比如后续可以用它创建新实例)。
2. 嵌套结构体定义末尾必须加分号?
分号在这里的作用是明确标记当前成员表达式的结束,帮MaxScript的语法解析器正确区分结构体的各个成员。因为嵌套结构体是一个多行的复杂表达式,如果只用逗号分隔,解析器可能无法准确判断它的结束位置,容易和后面的var2成员产生语法混淆。
不过也不是必须用分号——把分号换成逗号放在嵌套结构体定义的末尾,同样能正常运行:
testStruct = struct test ( var1 = "a", test2 = struct test2 ( var3 = "c", var4 = "d" ), var2 = "b" )
分号只是一种更稳妥的写法,尤其在复杂的嵌套结构中,能避免解析歧义。
内容的提问来源于stack exchange,提问作者ils_fl
相关产品推荐
相关产品推荐

