3 - 4

记录一次Mongo集群从3.4.3升级至4.0实战经验 记录一次Mongo3.4.3升级至Mongo4.0的实战经验1.how to do?1.1 环境1.2 升级步骤1.2.1升级服务器Mongo版本至3.61.2.2升级服务器mongo版本至4.02 why we need to update to mongo4.0? 1.how to do? 这个部分会记录本次升级的详细步骤 1.1 环境 本次升级的对象是Replica-set方式搭建的Mong... 阅读详情
3. Flow control in VBScript

条件语句 

VBScript支持以下两种条件控制语句:

  • If…Then…Else 语句

If …Then …Else语句的一个变种是If …Then…如果Then后面的语句可以在一行内书写下的话。注意与C/C++不同的是,你必须用End If 来结束If语句。

If 1 Then
   wscript.echo "it's 1"
   Else
   wscript.echo "it's not 1"
End If

  • Select Case 语句

Select Case 语句的作用类似于C/C++中的switch语句。请看示例:

card = "MasterCard"
 Select Case card
    Case "MasterCard"
  wscript.echo "MasterCard"
    Case "MasterCard"
  wscript.echo "Visa"
    Case "American Express"
  script.echo "American Express"
    Case Else
  sctip.echo "union pay"
End Select

与C/C++不同,case语句支持字符串作为比较的变量,并使用Case Else作为default选项。各Case语句之间不会重复进入,也不需要用break之类的关键字来限制重复进入。

循环语句

在 VBScript 中可使用下列循环语句:

Do…Loop: 当(或直到)条件为 True 时循环。具体语法形式有:

Do While …

Loop

Do Until …

Loop

Do

Loop While …

在这里…应该替换成具体的条件表达式。
While…Wend: 当条件为 True 时循环。语法形式为:

While …

Wend

For…Next: 指定循环次数,使用计数器重复运行语句。 具体语法形式有:

For I = … To … Step …

Next 

在这里,如果不指定步长,则步长为+1,这里,循环变量可以不为整数,步长也可以为负数。
For Each…Next:对于集合中的每项或数组中的每个元素,重复执行一组语句。这个跟C++里的用法差不多。

与C/C++不同的是,循环语句支持跳出,但不支持continue语义。如果一定要实现这种语义,应该寻找变通的办法。跳出是通过Exit来实现的。如果是在For语句中,则为Exit For,在Do循环中为Exit Do。但对While … Wend语句,似乎没有办法可以方便地跳出去。下面是一组例子:

'For .. To with default step length
 Sub DoMyProc50Times()
     Dim x
     For x = 1.05 To 10.05
         wscript.echo "x=" & x
     Next '注意Next后面不跟循环变量。步长默认为1
 End Sub

' For .. To with negative step
  Sub TwosTotal()
     Dim j, total
     For j = 10 To 2 Step -2
         total = total + j
     Next
     wscript.echo "total=" & total
 End Sub

'For each …
 Sub ListFiles(root)
 Set fso = CreateObject("Scripting.FileSystemObject")

Set fldr = fso.GetFolder(root)
 For Each f In fldr.Files
  wscript.echo f.name
  If f.name = "exit.txt" Then Exit For
    Next
 End Sub

 'Do .. Loop
  Sub ChkLastWhile()
     Dim counter, myNum
     counter = 0
     myNum = 9
     Do
         myNum = myNum - 1
         counter = counter + 1
   If counter = 9 Then Exit Do
     Loop While myNum > 10
     MsgBox "循环重复了 " & counter & " 次。"
 End Sub

'While … Wend
 Sub CheckWhile()
 While i < 10
       i = i + 2
    If I = 5 Then Exit Sub 'No exit while or exit wend available  
 Wend
 End Sub

 

4. Procedures in VBScript

为支持代码复用,VBScript提供了过程Sub和函数Function两种语法结构。在C/C++中并没有过程一说,不过VBScript中的过程其实跟函数差别并不大,可以看作是void型的函数。由于两者的差异很小,本文中多数讨论,对两者都适用。

  • 过程Sub

一个过程由

Sub xxx(x,y,..)

End Sub

定义。过程在End Sub处结束,但也可以在中间由Exit Sub退出。

  • 函数Function

一个函数由

Function xxx(x, y,…)

End Function

定义。函数在End Function处结束,但也可以在中间由Exit Function退出。与C/C++不同的是,VBScript没有return语句,函数的返回值由函数名带回去。与VB不同的是,由于VBScript的无类型特性,不可以申明函数返回值的类型,variant声明也是不允许的。关于函数的例子,在第一部分就就给出了一个获取本机IP的例子,读者可以参考那一部分。注意函数的返回值是由

GetIP = IP

带回的。在函数调用时,必须使用括号,否则函数将成为一个过程,并且得不到返回值。

与C/C++灵活的函数用法形成对照的是,VBScript中的过程和函数的用法很弱。为许多VBScript的爱好者诟病的不足之一是,VBScript的函数和过程不支持可变参数。尤其令人气愤的是,在VBScript中存在大量系统函数调用是允许可变参数的。这种不一致性给编程人员带来额外的理解和记忆上的麻烦。好在失望之余,还存在一些不太直观的补救方法。其一是可以仅为函数指定一个形式参数,且将这个参数定义为数组。由于VBScript的无类型特性,因此数组的各个元素可以携带不同类型的数据(指子类型)。请看示例:

首先要定义两个辅助函数IsMissing和Valid。IsMissing是VB中支持的函数,但在VBScript中,我们需要自已来定义。

Function Valid(arrayVar,arrayIndex)
    If ubound(arrayVar)<arrayIndex or lbound(arrayVar)>arrayIndex Then
         Valid=Empty
     Else
         Valid=arrayVar(arrayIndex)
     End If
End Function

Function IsMissing(var)
    IsMissing=((vartype(var) mod 8192 mod 10)=0)
End Function

这里,如果vartype(var) mod 8192(vbArray)不为vbError的话,则再对10(vbError)求模必不为0,因此var为无效参数,因为我们要求这里var定义为一维数组。

接下来,我们需要定义可变参数的函数:

Function myfuncVBS(arrVar) 
    Dim var1, var2
    var1=Valid(arrVar,0)
    var2=Valid(arrVar,1)
    If IsMissing(var1) then
        myfuncVBS="You have no pets."
    ElseIf IsMissing(var2) then
        myfuncVBS="Your dog has " & var1 & " puppies."
    Else
        myfuncVBS="Your dog has " & var1 & " puppies and your cat has " & var2 & " kittens."
    End If
End Function

我们的自定义函数最多允许两个参数,但只声明一个数组参数(实际上只能从调用形式上才能看出来,记住,在VBScript中,数据的实际取值决定数据的类型。现在结合这个函数看,IsMissing和Valid辅助函数的语义就很直观了。在Valid函数调用下面的If … Else语句用来给缺省参数赋默认值。这些在C++中不用程序自己照料的事情,在这里必须得自己做了。

最后是如何调用这个允许变参的函数,答案是使用Array()函数。 

wscript.echo myfuncVBS(Array(,1))   'Option 1
wscript.echo myfuncVBS(Array(1))    'Option 2

上面的代码中,如果不使用缺省参数,完整的调用形式应该为

Dim Value1
Dim Value2
wscript.echo myfuncVBS(Array(value1,value2))   'No option

VBScript也没有名字空间的概念。似乎惟一的办法是将函数定义在类中,这样调用某个函数就转化为调用某个类的方法,而且必须使用对象做为前缀,可惜没有static关键字,所以调用之前仍然必须先构造对象。记得public和private关键字在声明函数和过程时可用。

Class MyNameSpaces_
    Sub MyFunc()
         wscript.echo "hello world!"
    End Sub
End Class

Set MyNameSpaces = new MyNameSpaces_
MyNameSpaces.MyFunc
Set f = Nothing

好了,在讨论关于可变参数函数和名字空间的workaround之后,关于VBScript函数和过程讨论的也可以暂时告一段落了。当然,关于函数和过程名字的可见性仍然是一个很重要的话题,我将会在多文件工程中再次讨论它。

Nachos 3.4 安装教程 <br /><br />Nachos 3.4安装过程日志<br /> 环境<br />       OS: Ubuntu 10.04.2<br />       Editor: gedit<br />       Nachos 3.4<br />       GCC(G++) 3.4.6<br /> 安装过程<br /> 1       手动安装低版本的GCC(G++)<br />可能由于Nachos 3.4版本的代码太老的原因,编译Nachos需要GCC的版本要小于4.0。通过<br />$ gcc 阅读详情

相关推荐

虚幻4随笔 三 从UE3到UE4

笔者有幸参与过两个UE3项目,完全不同的使用方法,总共用了5、6年。引擎学习最好还是能参与项目,自己看的话往往容易纠结到一些细节上去,而引擎之所以是引擎,重要的恰恰是在容易被人忽视的工作流上。单从细节上看,UE3的代码很多地方并不完美,甚至有些奇怪,但是一旦做到工作流上,就会发现整个UE3工作流的强大之处。 先回顾一下UE3系统的一些结构要点,权当做个记录,看看UE4在这些方面有什么不同

noslopforever [天堂里的死神] 1万+

可变参数函数及其实现方式

一. 什么是可变参数函数 如果你接触 C 语言,那你一定不会对 printf 函数感到陌生,比如使用 printf("%d + %d= %d\n", a, b, a + b) 打印变量 a 和 b 相加的结果,也可以直接使用 printf("Hello, Meng bie ting\n") 往屏幕上输出字符串,printf 函数就是一个可变参数函数,第一个参数可以看做是一个格式化说...

椛茶的博客 2432

精通VBS脚本:函数列表与高级应用

在第一章,我们将初步了解VBS(Visual Basic Scripting Edition)脚本的基础语法结构。VBS是一种轻量级的脚本语言,它允许开发者快速编写简单的自动化脚本,常用于Windows环境下的任务自动化和系统管理。通过本章的学习,读者将掌握VBS脚本的基本元素和编写规则。确保VBS脚本的安全性和可靠性,需要开发者遵循严格的安全编码原则、健壮的错误处理策略以及定期的维护更新。通过这些最佳实践,可以提高脚本的安全性,减少潜在的风险,并确保脚本在复杂多变的IT环境中长期稳定运行。

weixin_34471637的博客 896

VB中定义可变长参数

如何:定义参数数量不确定的过程可以将“参数数组”声明为过程的参数列表中的最后一项。这允许过程接受参数的一组值,而不仅仅是一个值。定义过程时不必知道该组中值的数目。该组由对过程的每次调用单独确定,每次调用可以传递不同数目的值。有关更多信息,请参见参数数组。定义一个可以为其最后参数接受不确定数量的值的过程   1.在过程声明中,以普通方法定义参数列表。除最后一个参数以外的所有参数均为必选(不是 Opt

问题总结保存 6829

告别单一帧:在CFD-POST中完整加载Fluent瞬态计算结果的实战指南

本文详细介绍了在CFD-POST中完整加载Fluent瞬态计算结果的实战指南,解决工程师常见的只能看到最后一帧数据的问题。通过Fluent端的正确设置和CFD-POST端的完整加载技巧,帮助用户高效处理瞬态数据,提升后处理效率。文章还提供了常见问题排查、性能优化和高级后处理技巧,适用于Workbench环境下的流体流动分析。

weixin_29284657的博客 540

伺服电机三环控制实战:从参数整定到系统优化

本文以实战视角,深入解析伺服电机三环控制(位置环、速度环、电流环)的参数整定与系统优化全流程。文章摒弃复杂理论,通过生动的比喻和分步调试指南,详细阐述了从电流环快速响应、速度环平滑调节到位置环精准定位的调试方法,并提供了常见问题排查与进阶优化技巧,帮助工程师有效提升伺服系统性能与稳定性。

weixin_29201933的博客 244

Ubuntu16.04安装配置opencv3.4.3+opencv_contrib3.4.3

Ubuntu16.04安装配置opencv3.4.3+opencv_contrib3.4.3 一些废话:第一次用优快云,本人现在研二,开始学slam了,想把遇到的问题和学习过程都记录下来,希望给一样在学的小伙伴一些帮助,不要再去踩到我踩过的坑。同时也是记录自己的成长,给自己一点激励把!我目前跟着高博的《视觉slam十四讲》在学,看到了第五章。之后会把前面的学习笔记慢慢整理出来。不说废话啦,开始安...

科研使我快乐!!! 4万+

LightTools宏 vs Python API:光学仿真自动化方案选型指南

本文深入对比了LightTools光学仿真自动化中VBA宏与Python API两种方案。VBA宏内嵌易用,适合固定流程批处理;Python API生态强大,尤其在参数优化算法集成方面优势显著,便于构建复杂工作流。文章结合案例,为不同场景下的技术选型提供清晰指南。

garlic的博客 940

ubuntu 16.04 安装 opencv3.4.4 以及 opencv_contrib 3.4.4

最近在学习过程中,需要用到opencv3.4.2以上的版本,主要是需要其中与深度学习的CNN方法,在3.4.1的基础上,卸载opencv3.4.1,安装亮opencv3.4.4及相关依赖库opencv_contrib 3.4.4,opencv卸载参考:opencv卸载方法 其中遇到亮很多未知的错误,先尝试的cmake-gui安装cmake-gui可视化安装,可视化,很方便,但是第一次没有安装成功...

zbr794866300的博客 5332

基于 Arduino 的鱼缸水质检测控制系统设计

本系统通过多传感器实时采集鱼缸水质参数(pH 值、温度、溶解氧、浊度),经 Arduino 主控芯片处理后,驱动执行模块自动调节水质,并通过显示模块实时展示数据。系统具备阈值报警、自动换水、温度调节、增氧等功能,适用于家庭或小型水族箱的水质智能管理。本设计提供了低成本、易扩展的鱼缸水质管理方案,适用于家庭水族箱或小型水产养殖场景,可根据实际需求调整传感器类型和控制逻辑。注:本设计如有疑问需要解惑可直接私信本人,看我个人简介。

weixin_42300449的博客 1086

MIKE水动力笔记4_制作网格

建立水动力模型前的重要一步就是制作网格,本文所讲内容就是如何在MIKE中制作网格。

晏长街的博客 2万+

相机模型内参3x3 vs 4x4

一般会得到一个正交投影矩阵和透视投影矩阵,相乘就得到内参矩阵:不同的标准下会有些微不同,例如Unity 相机模型/OpenGL 标准下内参矩阵是:下面默认选用第二种。那么问题就来了,这两种差别是啥?分享一下在cursor里跟claud3.5 sonnet 问答的过程。

supersyzz的博客 993

即插即用篇 | 手把手教你 YOLOv11 添加注意力机制 | 适用于【检测任务】【分类任务】【分割任务】【关键点任务】| 20+ 种全打通!

即插即用篇 | 手把手教你 YOLOv11 添加注意力机制 | 适用于【检测任务】【分类任务】【分割任务】【关键点任务】| 20+ 种全打通!

Coding... 2831

python3.4安装_python3.4 安装

安装相关包#yuminstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgccmake1、下载python官网 http://www.python.org/ 下载python-3.3.4.tgz不管是浏览器另存为下载还是shell命令下载,反正是下载到本地...

weixin_39685674的博客 1281

华为OD机试 - 开源项目热度榜单(Java 2025 C卷 100分)

H = Wwatch X#watch + Wstar X#star +Wfork X#fork +Wissue X#issue +Wmr X#mr H表示热度值,Wwatch、Wstar、Wfork、Wissue、Wmr分别表示5个统计维度的权重,#watch、#star、#fork、#issue、#mr分别表示5个统计维度的统计值。

学Java,找哪吒 1756

世界模型(World Models)进展全景调研(截至 2025-08)

A5) 2019-07(待核验) | C-SWM:Contrastive Structured World Models(Kipf et al.)A6) 2019-07(待核验) | SLAC:Stochastic Latent Actor-Critic(Lee et al.)A3) 2015-12(背景注记,待核验) | Embed to Control(E2C,Watter et al.)Nature 2020)Repro/Code:werner-duvaud/muzero-general(社区)

u013250861的博客 488

windows安装R4.3.3

把C:\Users\win10\AppData\Local\R\win-library\4.2全部 copy到C:\Users\win10\AppData\Local\R\win-library\4.3,再打开rstudio即可。然后重启rstudio,即切换到了4.3.3版本,用的时候,发现没有包,发现忘了copy,所以把4.2里的包copy到4.3文件夹。下载后得到exe安装,默认安装到了C:\Program Files\R,因为之前已经安装了4.2.3,所以新建了文件夹为4.3.3,两者互不干扰。

m0_46336667的博客 6530

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

从在QT4中找不到QT3中的类 QT4与QT3的兼容

最近在研究QT,但是教程是 QT3版本的..而自己现在的QT是QT4版本了。后多原来qt3的类都不在了。但是想想又有点不对劲啊,哪有新版本全部否定老版本的啊,这不是砸自己的脚吗?后来又查了下,才发现qt4还是支持qt3的。QT4中提供了大量新控件,也保持了旧的控件,并命名为Qt3XXX,并且全都放到“/qt/include/Qt3Support”这个文件夹下面去了,哪些没有被修改的控件则继

斯人博客|PHP高级教程|C++|Javascript 2986

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

vue3.3.4 + vite4.4.9

【代码】Vue3。

347

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

python3.4.4_python3.4

广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!python3.4导入sqlite3是报错,如下:import sqlite3traceback (most recent call last): file , line 1,in import sqlite3 file usrlocalpython3.4libpython3.4sq...

weixin_39647499的博客 809

从Unreal Engine 3到Unreal Engine 4

介绍Unreal Engine 4与Unreal Engine 3的一些不同点。

景夫的博客 5574

smack4.3.4

最近项目需要,在Javaweb项目中使用smack4.3.4作为xmpp的客户端,连接openfire服务端。过程中遇到许多问题,资料较少,特意整理出来。 一、连接服务器+登录 XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder() .setUsernameAndPassword(us...

m0_37837453的博客 1119

wpsa3版面怎么变成a4、排版不变_worda3变a4排版打印 word如何将a3排版成a4

a4打a3双面打印排版1、将A4页面的文档重新排版打印在A3纸张上:页面设置——纸张——纸张大小——A3; 2、原A4大小的版面不变,放大打印到A3纸张上:按Ctrl+P调出打印对话框,在右下角“缩放”中选择A3; 3、将A4文档打印成A3对折文档,就像杂志一样:先在页面设置——页边距——页码范围中选择“书籍折页”,设置好上、下、内、外边距,然后点纸张标签,在纸张大小中选择A3,确定。这时页面...

weixin_39771969的博客 1万+
上一篇: 1 - 2
下一篇: 5 - 6
do_loop
博客等级 码龄19年 0粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值