




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用脚本语言编辑器 本章包括以下内容:1、打开脚本编辑器;2、打开一个脚本程序;3、把一个MEL脚本程序文件作为源文件 ; 4、保存脚本文字;5、执行一个脚本程序;6、清除状态信息;7、清除指令输入;8、响应一个指令; 9、显示程序中的语句行号;10、显示堆栈跟踪。 - 1、打开脚本编辑器 可以通过选择Window General Editors Script Editor或者点击Maya窗口右下部的Script Editor图标打开脚本编辑器。 脚本编辑器提供以下菜单选项: Open Script-打开脚本程序 Source Script-把一个脚本程序文件作为源文件 Save Selected-保存脚本程序 Execute-执行脚本程序 Clear History-清除历史 Clear Input-清除输入 Echo All Commands-返回所有指令的返回值 Show Line Numbers-显示行号 Show Stack Trace-显示堆栈跟踪 编辑命令 下表列出了在脚本编辑器中有效的键盘命令。(在表达式编辑器和一些输入框中它们也是有效的。) 命令 定义 平台 Ctrl+c Copy IRIX、Windows Ctrl+x Cut IRIX、Windows Ctrl+v Paste IRIX、Windows Ctrl+k 删除到本行末 IRIX Ctrl+d 删除下一个字符 IRIX Ctrl+a 移动光标到行首 IRIX Ctrl+e 移动光标到行末 IRIX Ctrl+a 选择编辑框中的所有文字 Windows - 2、打开一个脚本程序 我们可以打开一个脚本程序以便检查、执行或找出它的问题。打开一个脚本程序时并不执行它。 只是在脚本编辑器的输入栏里简单地把它显示出来。 要执行显示在脚本编辑器的输入栏里的一些或者全部脚本程序,可以用鼠标选择它,然后按键盘的数字Enter键。 当你想把一些或者全部内容拖拉到柜架上并在那里产生一个图标时,打开一个脚本程序就是非常有用的。 可以点击该图标执行这个程序。 为了打开一个脚本文件: 1-从脚本语言编辑器中选择File Open Script。出现一个文件浏览器。 2-选择要打开的脚本文件。 - 把一个脚本程序作为源文件 把一个MEL脚本程序文件作为源文件,执行所有的MEL指令并声明包含在该脚本程序文件中的所有的全局过程。 如果你在一个脚本程序文件中修改了一个程序,Maya 并不把这个改变登记给该程序,直到你把它的程序文件作为源文件。 这是因为Maya把执行了的程序保存到了存储器中。当你把一个脚本程序文件作为源文件时,Maya再次读该脚本程序文件里的那个程序。 为了把一个脚本程序作为源文件: 1-从脚本语言编辑器中选择File Open Script。出现一个文件浏览器。 2-选择要打开的脚本文件。 把一个脚本程序作为源文件之后,该文件里的所有MEL指令会执行。该脚本程序中的所有全局过程会被声明,但并不被执行。 MEL指令是按照它们出现在文件中的顺序执行的,并且应当没有错误。如果产生了一个错误,执行会中断并不再装载更多的程序。 当你把一个MEL脚本程序作为源文件之后,不声明或者不执行局部过程。 但是,如果你是通过在脚本编辑器或指令行里输入而声明了一个局部过程,该过程会被声明为全局过程,你可以在任何时候执行它。 执行一个程序可以通过执行一个MEL指令实现。当你想把一个脚本程序作为源文件,并具有执行该文件中的程序的作用时,这是很有用的。 为了这样做,要首先声明该程序,然后声明通过一个文件浏览器执行该程序的指令。 - 4、保存脚本文字 使用File Save Selected指令从脚本编辑器保存脚本文字。可以从指令输入(底部)将文字高亮化, 也可以通过脚本编辑器的状态信息(顶部)部分。Maya 将会把高亮的文字部分保存到你说明的目录里的一个 .mel 文件中。 - 5、执行一个脚本程序 当你想执行一个预先已经源化了的脚本程序时,可以在脚本编辑器的指令输入栏(底部)输入该程序的名字,然后进行下面工作中的一种: 按 Ctrl + Enter 键; 或者 按数字键盘的 Enter 键; 或者 从脚本编辑器里选择 Edit Execute。 也可以使用这些指令执行一个在脚本编辑器里已经打开了的脚本程序的定义。如果MEL脚本定义没有出现失败, 则该定义是从脚本编辑器的底部移到顶部。否则该定义不会移动,并且在顶部会显示出一个错误信息。 提示: 可以首先选取MEL script的一部分然后只执行这一部分(Ctrl+Enter)。 它不会删除其它部分。 - 6、清除状态信息 要清除状态信息(脚本编辑器的顶部),从脚本编辑器里选择Edit Clear History。这将会删除掉所有的状态信息文字。 使用这个指令时应当小心一些,因为没有办法撤消它。 - 7、清除指令输入 要清除指令输入文字(脚本编辑器的顶部), 从脚本编辑器里选择Edit Clear Input。这将会删除掉所有的指令输入文字。 使用这个指令时应当小心一些,因为没有办法撤消它。 - 8、响应一个指令 当你用Maya工作时,对应的MEL指令常常出现在脚本编辑器的顶部。缺省情况下,只有那最重要的指令才会显示。 你可以在脚本编辑器里选择Edit Echo All Commands ,虚拟地显示与你的Maya作用相关的所有指令。 它可以帮助你学习哪些MEL指令触发作用。 在你的Maya的作用之间并不是总有一对一的对应关系,这些指令返回响应到脚本编辑器里。 如果你使用一个脚本程序去打开属性编辑器,一些MEL指令出现在脚本编辑器里(响应是打开的): buildObjectEdMenu MayaWindowmenu4menuItem56; editSelected; editMenuUpdate MayaWindowmenu2; 但是,只有以下的MEL指令需要引入属性编辑器: editSelected; 同时,对于一些作用来说,也不总是会将MEL指令的响应返回到脚本编辑器里。如,当你选择了一个属性编辑器时, 脚本编辑器的顶部没有返回任何信息。 要关闭返回信息,从脚本编辑器里再次选择 Edit Echo All Commands。 - 9、显示程序中的语句行号 如果你在执行一个长的程序时由于错误而出现了问题,可以打开脚本程序的行号,你就可以更容易地找到错误。 要显示错误指令的行号,从脚本编辑器里选择Edit Show Line Numbers。当你打开了Show Line Numbers选项, Maya 在脚本编辑器状态信息框(顶部)的旁边显示脚本程序的行号。 要关掉行号,在脚本编辑器菜单里再次选择Edit Show Line Numbers。 Maya将显示行号的设置保存下来作为以后使用。如果打开了行号,当下一次你运行Maya时它们会出现在脚本编辑器里。 - 10、显示堆栈跟踪 如果你用埋入的脚本程序文件执行一个脚本程序时出现了问题,打开堆栈跟踪选项显示文件结构中的脚本程序错误。 要显示一个脚本文件的堆栈跟踪,在脚本编辑器里选择Edit Show Stack Trace。Maya会在一个窗口里显示堆栈跟踪, 在脚本编辑器里显示一个错误信息 使用脚本语言结点 一个脚本语言结点是一个包括了一个MEL脚本语言程序的结点。 当该结点产生或者当该结点被破坏时,该程序被执行,它取决于脚本结点的类型。 本章包括以下内容:1、了解脚本语言结点;2、产生脚本语言结点;3、测试脚本语言;4、编辑脚本语言结点; 5、设立脚本语言结点的执行;6、删除脚本语言结点。 - 1、了解脚本语言结点 脚本语言结点是把一个MEL脚本语言程序存储到一个Maya场景文件中的一种方法。 脚本语言结点也包含了用于产生用户界面的所有MEL指令,并被用MAYA文件保存。 你可以用不同的方法执行脚本语言程序。可以指明一个脚本程序结点执行它的程序: 当该结点是从一个文件中读出的; 在渲染一桢图像的之前或者之后; 在渲染一个动画的之前或者之后。 当一个文件关闭着时使用File Open或者File New 一个脚本语言程序结点有三个属性: Before、After和Type。决定于脚本程序的类型,当执行该程序时,说明Before和After属性。 - 2、产生脚本语言结点 可以使用表达式编辑器产生脚本语言结点。 为了产生一个脚本语言结点: 1-选择Window Expression Editor。 2-在Expression Editor中选择Select Filter By Script Node Name。 任何现存的Script Nodes显示在Script Nodes表中。 3-在Expression Editor的Script window中输入脚本程序。 4-在Script Node Name框中输入一个名字。 5-定义你想要使脚本成为一个之前或者之后的脚本程序。 6-点击Create键。 这产生脚本结点。现在你可以定义它的类型。 7-从Execute On 下拉菜单里选择以下的一个脚本程序结点类型: Demand 当你使用scriptNode指令,隐含地需求它时,运行脚本文件(看在线指令文件的scriptNode指令的信息)。 忽略这种类型的脚本文件的之前和之后的属性。 Open/Close 如果你已经指定了该脚本文件作为之前的脚本文件,当以批处理模式读文件时脚本被执行。如果你把它 作为之后的脚本文件,当文件被关闭或者没有以图示用户界面模式提供,或者当该结点被删除时,它被执行。 GUI Open/Close 如果你已经指定了该脚本文件作为之前的脚本文件,当以图示用户界面模式运行MAYA,在读文件时脚本文件 被执行。如果你把它作为之后的脚本文件,当文件被关闭,或者没有以图示用户界面模式提供,或者当该结 点被删除时,它被执行。 UI Configuration (内部) 之前的脚本文件包括了用户界面设置的信息。它是由Maya或者一个plug-in为了保存面板排列和编辑状态信息 而自动的产生的。当你打开一个文件时,这个脚本结点执行它的脚本文件。在执行之后,该结点被删除掉。之 后的脚本是不会运行的。如果一个文件被提供或被输入,这个结点将会不存在。 软件渲染 如果你选派好脚本作为之前的脚本,脚本的执行在一个动画之前被渲染。如果你选派好脚本作为之后的脚本, 脚本的执行在一个动画之后被渲染。 软件桢渲染 如果你选派好脚本作为之前的脚本,脚本的执行在一个桢之前被渲染。如果你选派好脚本作为之后的脚本,脚 本的执行在一个桢之后被渲染。 8-点击Edit键给脚本结点赋类型。 9-如果你想增加另外一个脚本结点,点击New Script Node键。 Script窗口和Script Node Name框被清除,你可以输入一个新的脚本结点。 - 3、测试脚本程序 可以使用表达式编辑器对脚本程序进行测试。 为测试一个脚本程序: 1-选择Window Expression Editor。 2-在表达式编辑器中选择Select Filter By Script Node Name。 3-在Script window中输入脚本程序,或从Script Nodes 表中。 4-点击Test Script键。 错误显示在脚本语言编辑器中。 - 4、编辑脚本语言结点 可以使用表达式编辑器对脚本语言结点进行编辑。 为了对脚本语言的编辑定义一个编辑器: 1-选择Window Expression Editor。 2-在表达式编辑器中选择Select Filter By Script Node Name。 3-从编辑器下拉菜单中选择一个编辑器。 为了编辑一个脚本语言结点: 1-选择Window Expression Editor。 2-在表达式编辑器中选择Select Filter By Script Node Name。 3-选择你想在Script Nodes list中要编辑的脚本语言结点。 4-在Script window中编辑该脚本语言结点。 5-如果你想撤消你的改变,点击Reload。Maya重装原来的脚本语言结点。 6-为了清理Script window,点击Clear键。 - 5、设立脚本语言结点的执行 为了设立脚本语言结点的执行: 1-选择File Open Scene。或选择File Open然后在Open Scene window中点击Options。 2-点击复选框将Execute Script Nodes打开或者关闭。 - 6、删除脚本语言结点 可以使用表达式编辑器删除脚本语言结点。 为了删除一个脚本语言结点: 1-S选择Window Expression Editor。 2-在表达式编辑器中选择Select Filter By Script Node Name。 3-选择你想在Script Nodes list中要删除的脚本语言结点。 4-点击Delete按键 定义数据 本章描述MEL的数据类型它们之间的转换:1、变量;2、常数;3、数据类型转换;4、限制。1、 变量 所有变量名以$开始。变量名不包括空格和特殊字符。你可以使用下划线和数字作为变量名但开头不能是数字。 识别大小写,如$temp不同于$Temp。 例: int $radical7Mark; / 有效 int HEYchief; / ERROR: 开头缺$ int $ nine; / ERROR: 开头不是$ int $_VAL_ID_AIT_; / 有效 int $howdyYall; / ERROR: 含有无效字符 int $1Bill; / ERROR: 开头不能是数字 有以下五种变量类型: 类型 意义 例子 int 整数 (.-2, -1, 0, 1, 2.)10, -5, 和 0 float 小数 392.6, 7.0, and -2.667 string 一个或更多的字符 Whats up, chief? vector 三个浮点数 matrix 浮点数阵列 以上类型除matrix外,都可以是一个阵列。如,一个三元素的整数阵列是一个跟一个的三个整数。 声明和标注变量 声明一个变量是说明变量的名字和类型;标注一个变量是给已生命的变量一个专有的值。下例是将声明和标注合为一步: int $temp = 3; float $Temp = 222.222; string $tEmp = Heya kid.; vector $teMp = ; matrix $temP23 = ; 当生命矩阵变量时,必须包括二维阵列的尺寸。 下例说明对整型、浮点、字符串和矢量阵列型变量阵列的声明和标注: int $TEmp5 = 100, 1000, -70, 2, 9822; float $TeMp4 = 43.3, -10.7, 0, 82.5; string $TemP3 = Lord, Flies, cool brown fox2.; vector $tEMp2 = , ; 如果一个变量被声明但未被标注,它的所有的值是0;字串变量则?quot; 。 float $teMP; / 赋值: 0; string $TEMp3; / 赋值: , , ; vector $TEmP2; / 赋值: , ; matrix $TeMP32; / 赋值: ; 如果一个变量被声明或者被使用而没有定义它的类型,它被隐含声明为将要赋值给它的那种类型。 $tEMP = 0.0; / 浮点数 string $TEMP; / 零元素字符串阵列 $trip = heya Buddy; / 字符串 $rip = 1, 2, 3, 4; / 四元素整型阵列 $lip = ; / 2X2 矩阵 $flixp = $TEMP; / 零元素字符串阵列 注意值0.0是一个浮点数,而一个0值是一个整型数。这决定了在隐含声明时是产生一个浮点数还是产生一个整型数。 不建议使用隐含声明,因为它不象变量的隐含声明那样的清楚。 保留字 MEL的保留字可以是一个变量类型、控制逻辑或是表达一个值。以下是MEL的保留字: break case continue default do else false float for global if in int matrix no off on proc return string switch true vector while yes 数据类型关键字 int float vector string matrix 布尔常数关键字 yes no on off true false 流动控制关键字 if else for while do in break continue default switch case 其他关键字 global return source catch alias proc 保留字也区分大小写。所以int是整型,Int不是。实际上alias、source、catch 也是保留字,但它们起指令作用, 因此没有被包括在上述表内。 字符串 字符串可用+运算连接。 string $what = Whale; string $title = Great + White + $what; 这将使title变量的内容为Great White Whale。 矢量 为寻址一个vector的各个成分,使用.。 vector $LOS = ; float $firstComponent = $LOS.x; / 赋值为 1 float $secondComponent = $LOS.y; / 赋值为 2 float $thirdComponent = $LOS.z; / 赋值为 7 标注矢量的成分: vector $LOCK = ; $LOCK = ; / Assigned 但不能直接给一个成分标数字: $LOCK.z = 3000; / 错误 但是通常当访问一个矢量成分时,你应该象下面例子那样围绕它使用括号: 例子: print $LOCK.x; / 错误 print($LOCK.x); setAttr persp.scaleX $LOS.x; / 错误 setAttr persp.scaleX ($LOS.x); 阵列 你可以声明一个int, float, string或vector类型的阵列。阵列的第一个序号为0 string $array3 = firstn, secondn, thirdn; print($array0); / 显示 firstn print($array1); / 显示 secondn print($array2); / 显示 thirdn 阵列尺寸可以自动地增加。 int $scores; / 声明为一个0元素阵列 $scores150 = 3; / 现在是151元素阵列 $scores200 = 5; / 现在是201元素阵列 但最好不要声明过大的没用的阵列,因为它要占内存: int $bigBoy; $bigBoy123456789 = 2; / 危险 要除去一个阵列的所有元素可使用clear功能。要查看阵列的尺寸可使用size。 string $hats3 = blue, red, black; print(There were + size($hats) + hats.n); clear($hats); print(But now there are + size($hats) + .n); 以上指令的输出是: There were 3 hats. But now there are 0. 矩阵 可以把一个矩阵想象为一个浮点阵列的阵列,或是一个浮点数据的二维阵列。矩阵产生后,它的尺寸不能改变。 企图寻址一个矩阵的不存在的元素将会出现错误。在产生矩阵时必须定义它的尺寸。 matrix $a1 = ; / 错误: 没有说明尺寸 matrix $a2; / 错误: 没有说明尺寸 matrix $a321; / 有效: 产生 ; $a301 = 7; / 错误: 元素不存在 $a310 = 9; / 有效 声明而未标注值的矩阵,其所有元素都为0。 matrix $a424 = ; 如果矩阵表示一个二维阵列,则第一个索引表示列;地二个索引表示行: matrix $a424column 0column 1column 2column 3 row 0-3.462010.7row 1429.31001 如果你把矩阵设想为一个身列的阵列,则第一个索引表示阵列,第二个索引该阵列里的索引: matrix $a424index 0index 1index 2index 3 float array 0-3.462010.7float array 1429.31001 物体属性 属性是场景中的物体的特征或参数。在Maya中可以用许多方法建立属性-属性编辑器、MEL程序、工具盒工具或表达式。 你可以设立属性去控制在工作空间中看到的虚拟的事情。 如,一个NURBS球具有属性scaleX, scaleY, scaleZ, rotateX, 等等。 物体属性名 物体属性名具有如下格式: objectName.attributeName 其中objectName是物体的名字,attributeName是该物体的属性名。属性名中不要使用空格或特殊字符,可以用下划线。 产生一个名字为Brawl的球: sphere -name Brawl; 可以获取它的属性的一个值: float $yScale = getAttr Brawl.scaleY; Brawl.scaleY是Brawl物体的scaleY属性的全名。 路径 如果两个物体具有不同的父物体,它们可以有相同的名字。当说明有相同名字的物体时必须使用路径: pathnameobjectname 其中pathname物体的父物体。管道字符()用于区分路径。 sphere -name doughnutHole; group -name GroupA; sphere -p 3 0 0 -name doughnutHole; 现在我们有两个叫做doughnutHole的物体,但一个有父物体GroupA,另一个没有父物体。以下指令产生一个错误, 因为Maya不知道哪个doughnutHole物体要设立scaleY属性: setAttr doughnutHole.scaleY 3.3; / ERROR: 哪个? 你必须输入属性的路径: setAttr GroupAdoughnutHole.scaleY 3.3; setAttr doughnutHole.scaleY 0.3; 你可以说明物体的所有路径,用管道符进行区分: group -name GroupB GroupA; setAttr GroupBGroupAdoughnutHole.scaleY 1; 物体属性的可能的数据类型 每个属性有特定的数据类型。几何体, 粒子物体, Maya中的其他项都具有这些数据类型的属性: 数据类型 意义 属性例 数据例 浮点小数 numbers Ball.translateX 2.6, 7.0, -9.1int 整数 (.-1, 0, 1, 2.) BallShape.spansU -289, 33, 0 boolean 0或1 Ball.visibilityon, off, yes, no, 1, 0, true, false 考虑一个由以下指令产生的叫做Fire的粒子物体: particle -name Fire -position 7 0 7; 它可以具有以下另外的数据类型: 数据类型 意义 属性例 数据例 vector array 矢量阵列 FireShape.position , double array 浮点阵列 numbersFireShape.lifespan 1.333 1.666 你可以使用getParticleAttr和setParticleAttr指令设立矢量的元素或一个粒子系统的双阵列。 float $Tmp = getParticleAttr -at position FireShape.pt0; vector $particlePosition = ; setParticleAttr -at position -vv 0 0 7 FireShape.pt0; 对于矢量阵列数据类型,Maya用一个阵列的单元素对物体的每一部分表达指定的属性。 注意,pt0 表达产生FireShape的第一部分的索引。每个元素是由三个浮点数构成的。 在一个双阵列中,Maya用一个浮点数对每一部分表达特定的属性。 重要事项:在表达式中,你可以使用一个等于符号(=)设立或得到一个变量或属性的值。 在MEL语句中,只可以使用(=)设立或得到一个变量值。 使用MEL setAttr、getAttr、setParticleAttr、getParticleAttr指令设立或得到一个属性值。 全局和局部变量 典型地,你将使用在一个单序列里的变量这些变量叫做局部变量(local variables), 因为它们只出现在局部过程里: float $tester; 如果你产生一个相同名字的局部变量在两个序列里,两个变量被分离并且相互无关。 如:假定你在两个序列中产生一个取名为$tester的变量。标注或修改$tester变量的一个值不影响在其他里的值。 如果你想在一个序列里产生并动画一个变量,也要把它使用于该序列之外, 你可以把它声明为一个全局变量(global variable)。 global float $counter; 你就可以用其它MEL指令和语句读该变量。当你要扩大该变量的使用范围时, 应再次进行声明。 global float $crash = 8; global proc holy() $crash = 7; print($crash + n); print($crash + n); / 结果:8 holy(); / 结果:7 print($crash + n); / 结果:8 尽管看起来使用了全局浮点型的crash,实际上使用了一个隐含产生的局部整型变量 (看例子: 隐含声明(Implicit declaration)。 global float $slash = 8; global proc moly() global float $slash; $slash = 7; print($slash + n); print($slash + n); / 结果:8 moly(); / 结果:7 print($slash + n); / 结果:7 当你用了一个单指令声明了一个全局变量并给它标注了一个值,该标注仅发生在由Maya第一次读指令的时候。 被定义了的序列中的全局变量是被读的。 global proc proof() global float $fight = 7; $fight = 2; print($fight + n); 知道该序列的proof被读入,变量fight没有声明。换言之,Maya还没有觉察到它的变量的存在。 但是,一旦该序列被读入和被定义,该变量fight被声明为一个全局浮点型并被赋值为7。 该声明之后,该全局变量对所有的MEL指令都是可见的。即它可被任何MEL指令修改。 但是,当proof被执行后,fight被赋值为2。 如:在proof被定义后,以下指令将产生给出的结果: print($fight + n); / Result: 7 proof; / Result: 2 print($fight + n); / Result: 2 如果两个序列对相同的全局变量声明和标注一个值会出现什么情况?看以下两个脚本文件: (假定放在你的脚本目录中): 脚本文件: crush.mel global proc crush() global float $sight = 7; print $sight; 脚本文件: groove.mel global proc groove() global float $sight = 9; print $sight; 一个值标注到一个全局变量仅仅是在第一次Maya读每个脚本文件时。 crush(); / Result: 7 groove(); / Result: 9 crush(); / Result: 9 2、 常数 MEL中的常数只有布尔常数(Boolean constants)。它实际上是整型数,值为1或者为0。 关键字true, on, 和yes具有值1;关键字false, off 和 no具有值0。 3、 数据类型转换 转换为 - int float string vector matrix - int ($i) perfect perfect perfect none float ($f) without perfect perfect none fraction string without perfect if perfect perfect if none fraction starts with starts with if starts number, vector or with number else 0 floats with ,else 0 remaining elements 0 vector length of length of 3 floats perfect perfect vector vector separated for 13 without by a space matrix, fraction else none matrix for 13 for 13 none for 13 perfect matrix or matrix or matrix or smaller, smaller, smaller, length of length of perfect with matrix matrix remaining without elements 0 fraction - 一个标量类型(scalar type)是一个非阵列型。从阵列到标量或从标量到阵列型没有转换。 int $ski = 1.8; / 赋值:1 vector $crads = 1.7; / 赋值: int $wild = 3.44 dogs; / 赋值:3 vector $wrd = 8 2.2 cat; / 赋值: int $my = ; / 赋值:3 string $oo = ; / 赋值:6 2.2 1 matrix $so13 = $wrd; / 赋值: float $mole = ; / 赋值:0.5 vector $ole = ; / 赋值: 自动转换 Maya的自动类型转换使我们可以不考虑它们的状态以及不考虑是否是能接受的类型。以下是它们的规则: -Strings 支配其他所有类型。 -Vectors 支配floats。 -Floats 支配ints。 -如果一个算子为整型,另一个为浮点型,MEL将整型转换为浮点型。 -在vector和matrix之间,左边的类型起支配作用。 -赋值时,有左边的类型支配。 在一个赋值操作中,右边的类型被转换到左边的类型。前四条规则在右手的计算期间施用于子表达式; 最终的转换发生在给左边赋值时。 下表是自动类型转换的规则。 - 运算 结果的数据类型 - int 运算子 float float float 运算子 int float int 运算子 vector vector vector 运算子 float vector vector 运算子 matrix vector matrix 运算子 vector matrix matrix 运算子 string string string 运算子 int string - $var1 = 7 + 1.3; / 类型: float (8.3) $var2 = 7.9 + 2; / 类型: float (9.9) $var3 = 2 + ; / 类型: vector $var4 = 0007 + Lives!; / 类型: string (7 Lives!) 在最后的例子中,0007是值7的整型,它被转换为一个字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年陶瓷3D打印增韧技术助力航空航天高温材料创新
- 2025物流企业的劳动合同模板
- 门卫岗前安全教育培训课件
- 门卫安全培训教育课件
- 镜片知识培训课件
- 2025年3D打印在汽车制造中的轻量化材料
- 2025年化工三基三严考试试题及答案
- 锻造生产线培训知识库课件
- 2025年3D打印技术的食品制造创新
- 人教版初中生物八年级上册第二单元植物类群分类试卷及答案
- 2025年海关关务测试题及答案
- (正式版)DB3302∕T 1180-2025 《高速公路建设韧性指标体系》
- 2025年8月广东深圳市光明区住房和建设局招聘一般专干5人备考练习题库及答案解析
- 中康科技腾讯健康:2024年消费者健康洞察呼吸系列报告-鼻炎鼻窦炎篇预览版
- 《煤矿安全规程(2025)》防治水新旧条文对照
- 2025年IT技术支持工程师招聘面试问题及答案解析
- GB 16807-2025防火膨胀密封件
- 挤压模具工特殊工艺考核试卷及答案
- 2025-2026学年外研版八年级英语上册教学计划及进度表
- 麻醉医生进修汇报课件
- (2025年标准)灵活用工协议书
评论
0/150
提交评论