RhinoScript语法(入门基础3)

6
回复
7056
查看
打印 上一主题 下一主题
[复制链接]

微信扫一扫 分享朋友圈

签到天数: 37 天

连续签到: 1 天

[LV.5]经常光顾

1
发表于 2011-8-10 12:16:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Exit For 语句用于在计数器达到其终止值之前退出 For...Next 语句。因
为通常只是在某些特殊情况下(例如在发生错误时)要退出循环,所以可以在 If...Then...Else 语句的 True 语句块中使用 Exit For 语句。如果条件为 False,循环将照常运行

   使用 For Each...Next For Each...Next 循环与 For...Next 循环类似。For Each...Next 不是将语句运行指定的次数,而是对于数组中的每个元素或对象集合中的每一项重复
一组语句。这在不知道集合中元素的数目时非常有用。
   在以下示例中,Dictionary 对象的内容用于将文本分别放置在多个文本框中:
   <HTML>
   <HEAD><TITLE>窗体与元素</TITLE></HEAD>
   <SCRIPT LANGUAGE="VBScript">
   <!--
   Sub cmdChange_OnClick
          Dim d '创建一个变量
          Set d = CreateObject("Scripting.Dictionary")
          d.Add "0", "Athens" '添加键和项目
          d.Add "1", "Belgrade"
          d.Add "2", "Cairo"
          For Each I in d
                Document.frmForm.Elements(I).Value = D.Item(I)
          Next
    End Sub
    -->
    </SCRIPT>
    <BODY>
    <CENTER>
    <FORM NAME="frmForm"
    <Input Type = "Text"><p>
    <Input Type = "Text"><p>
    <Input Type = "Text"><p>
    <Input Type = "Text"><p>
    <Input Type = "Button" NAME="cmdChange" VALUE="单击此处"><p>
    </FORM>
    </CENTER>
    </BODY>
    </HTML>
VBScript 过程
     过程分类
     在 VBScript 中,过程被分为两类:Sub 过程和 Function 过程。
     Sub 过程是包含在 Sub 和 End Sub 语句之间的一组 VBScript 语句,执行操作但不返回值。Sub 过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果
Sub 过程无任何参数,则 Sub 语句必须包含空括号 ()。
     下面的 Sub 过程使用两个固有的(或内置的)VBScript 函数,即 MsgBox 和 InputBox,来提示用户输入信息。然后显示根据这些信息计算的结果。计算由使用
VBScript 创建的 Function 过程完成。此过程在以下讨论之
后演示。
     Sub ConvertTemp()
     temp = InputBox("请输入华氏温度。", 1)
     MsgBox "温度为 " & Celsius(temp) & " 摄氏度。"
     End Sub
     Function 过程
     Function 过程是包含在 Function 和 End Function 语句之间的一组 VBScript 语句。Function 过程与 Sub 过程类似,但是 Function 过程可以返回值。Function 过程
可以使用参数(由调用过程传递的常数、变量或表达式)。如果 Function 过程无任何参数,则 Function 语句必须包含空括号 ()。Function 过程通过函数名返回一个值,
这个值是在过程的语句中赋给函数名的。Function 返回值的数据类型总是 Variant。
     在下面的示例中,Celsius 函数将华氏度换算为摄氏度。Sub 过程 ConvertTemp 调用此函数时,包含参数值的变量被传递给函数。换算结果返回到调用过程并显示在消
息框中。
     Sub ConvertTemp()
     temp = InputBox("请输入华氏温度。", 1)
     MsgBox "温度为 " & Celsius(temp) & " 摄氏度。"
     End Sub
     Function Celsius(fDegrees)
     Celsius = (fDegrees - 32) * 5 / 9
     End Function
过程的数据进出
     给过程传递数据的途径是使用参数。参数被作为要传递给过程的数据的占位符。参数名可以是任何有效的变量名。使用 Sub 语句或 Function 语句创建过程时,过程名之
后必须紧跟括号。括号中包含所有参数,参数间用逗号分隔。例如,在下面的示例中,fDegrees 是传递给 Celsius 函数的值的占位符:
    Function Celsius(fDegrees)
    Celsius = (fDegrees - 32) * 5 / 9
    End Function
    要从过程获取数据,必须使用 Function 过程。请记住,Function 过程可以返回值;Sub 过程不返回值。
在代码中使用 Sub 和 Function 过程
   
    调用 Function 过程时,函数名必须用在变量赋值语句的右端或表达式中。例如:
    Temp = Celsius(fDegrees)
    或
    MsgBox "温度为 " & Celsius(fDegrees) & " 摄氏度。"
    调用 Sub 过程时,只需输入过程名及所有参数值,参数值之间使用逗号分隔。不需使用 Call 语句,但如果使用了此语句,则必须将所有参数包
含在括号之中。
    下面的示例显示了调用 MyProc 过程的两种方式。一种使用 Call 语句;另一种则不使用。两种方式效果相同。
     Call MyProc(firstarg, secondarg)
     MyProc firstarg, secondarg
     请注意当不使用 Call 语句进行调用时,括号被省略。
VBScript 编码约定
    编码约定是帮助您使用 Microsoft Visual Basic Scripting Edition 编写代码的一些建议。编码约定包含以下内容:
    * 对象、变量和过程的命名约定
    * 注释约定
    * 文本格式和缩进指南
    使用一致的编码约定的主要原因是使 Script 或 Script 集的结构和编码样式标准化,这样代码易于阅读和理解。使用好的编码约定可以使源代码明白、易读、准确,更加
直观且与其他语言约定保持一致。
常数命名约定
    VBScript 的早期版本不允许创建用户自定义常数。如果要使用常数,则常数以变量的方式实现,且全部字母大写以和其他变量区分。常数名中的多个单词用下划线 (_) 分
隔。例如:
    USER_LIST_MAX
    NEW_LINE
    这种标识常数的方法依旧可行,但您还可以选择其他方案,用 Const 语句创建真正的常数。这个约定使用大小写混合的格式,并以“con”作为常数名的前缀。例如  
    conYourOwnConstant
变量命名约定
    出于易读和一致性的目的,请在 VBScript 代码中使用以下变量命名约定:
    ttt
格式化代码
    应尽可能多地保留屏幕空间,但仍允许用代码格式反映逻辑结构和嵌套。以下为几点提示:
    * 标准嵌套块应缩进 4 个空格。
    * 过程的概述注释应缩进 1 个空格。
    * 概述注释后的最高层语句应缩进 4 个空格,每一层嵌套块再缩进 4 个空格。
    例如:
    '*********************************************************
    ' 目的: 返回指定用户在 UserList 数组中第一次出现的位置。
    ' 输入: strUserList(): 所查找的用户列表。
    ' strTargetUser: 要查找的用户名。
    ' 返回: strTargetUser 在 strUserList 数组中第一次出现时的索引。
    ' 如果目标用户未找到,返回 -1。
    '*********************************************************
    Function intFindUser (strUserList(), strTargetUser)
          Dim i ' 循环计数器。
          Dim blnFound ' 发现目标的标记。
          intFindUser = -1 i = 0 ' 初始化循环计数器。
          Do While i <= Ubound(strUserList) and Not blnFound
                If strUserList(i) = strTargetUser Then
                        blnFound = True ' 标记设为 True。
                        intFindUser = i ' 返回值设为循环计数器。
               End If
               i = i + 1 ' 循环计数器加 1。
           Loop
     End Function
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏
收藏0
支持
支持0
反对
反对0
订阅 Rhino 最新资讯
回复

使用道具 举报

该用户从未签到

2
发表于 2011-8-10 15:26:41 | 只看该作者
这是什么东东,没见过,能说下有什么用吗?
回复 支持 反对

使用道具 举报

签到天数: 55 天

连续签到: 1 天

[LV.5]经常光顾

3
发表于 2011-8-10 19:31:38 | 只看该作者
强者 发表于 2011-8-10 15:26
这是什么东东,没见过,能说下有什么用吗?

脚本建模 通过编程来建
回复 支持 反对

使用道具 举报

该用户从未签到

4
发表于 2011-8-11 17:43:36 | 只看该作者
哦,原来如此
回复 支持 反对

使用道具 举报

该用户从未签到

5
发表于 2014-7-17 11:56:50 | 只看该作者
博主幸苦,非常感谢,以后希望您多多指点。
回复 支持 反对

使用道具 举报

签到天数: 2 天

连续签到: 1 天

[LV.1]到此一游

6
发表于 2014-8-30 08:52:22 | 只看该作者
回复 支持 反对

使用道具 举报

签到天数: 44 天

连续签到: 1 天

[LV.5]经常光顾

7
发表于 2014-9-27 21:53:35 | 只看该作者
一直想学,可是总学不好
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

15927211580

周一至周五 9:30-18:00

武汉市武昌区中山路380号201

  • 关注微信公众号

  • 微信咨询客服号

QQ- Archiver- 鄂ICP备12016959号   充值M币 |勋章中心 | ( 鄂ICP备12016959号 )

Powered by Discuz!X3.2© 2001-2013 Comsenz Inc.

金融信息行业协会理事单位 | 信息服务业行业协会会员单位 | 网络信贷服务业企业联盟单位