gpt4 book ai didi

function - MsgBox ""与 VBScript 中的 MsgBox()

转载 作者:行者123 更新时间:2023-12-01 18:43:44 24 4
gpt4 key购买 nike

我正在尝试编写 VBScript,并且正在使用 Randomize 和 MsgBox 等函数。我很好奇使用 () 和不使用它们有什么区别。例如:

随机化 - 此行有效。

Randomize() - 此行也有效。

MsgBox“Hello,World!” - 这有效。

MsgBox ("Hello, World!") - 这也有效。

该脚本将在具有不同 Windows 版本的多台计算机上运行(至少 Windows XP )。我想知道在使用这些函数时是否会遇到任何兼容性/语法问题。

最佳答案

一段可调用的代码(例程)可以是一个Sub(为副作用/它的作用而调用)或函数(为其返回值而调用)或两者的混合。作为MsgBox的文档,

Displays a message in a dialog box, waits for the user to click abutton, and returns a value indicating which button the user clicked.

MsgBox(prompt[, buttons][, title][, helpfile, context])

表明,该例程属于第三类。

VBScript 的语法规则很简单:

调用(例程作为)函数时使用参数列表()

如果您想向用户显示消息并需要知道用户的响应:

Dim MyVar
MyVar = MsgBox ("Hello, World!", 65, "MsgBox Example")
' MyVar contains either 1 or 2, depending on which button is clicked.

调用(例程作为 a)时不要使用参数列表 () Sub

如果您想向用户显示消息并且不感兴趣在响应中:

MsgBox "Hello, World!", 65, "MsgBox Example"

这种美丽的简单性被以下因素搞乱了:

使用 () 作为参数列表并强制按值调用语义的设计缺陷

>> Sub S(n) : n = n + 1 : End Sub
>> n = 1
>> S n
>> WScript.Echo n
>> S (n)
>> WScript.Echo n
>>
2
2

S (n) 并不意味着“用 n 调用 S”,而是“用 n 的值的副本调用 S”。

程序员看到了这一点

>> s = "value"
>> MsgBox(s)

“works”尝试时会大吃一惊:

>> MsgBox(s, 65, "MsgBox Example")
>>
Error Number: 1044
Error Description: Cannot use parentheses when calling a Sub

编译器对于 Sub 调用中的empty () 比较宽松。 “纯粹”

Sub Randomize(由于设置随机种子的副作用而调用)可以通过以下方式调用

Randomize()

尽管 () 既不能表示“给我你的返回值”,也不能表示“通过”按值计算的东西”。这里更严格一点会迫使程序员意识到

Randomize n

Randomize (n)

允许在Sub调用中使用参数list()的Call语句:

>> s = "value"
>> Call MsgBox(s, 65, "MsgBox Example")

这进一步鼓励程序员不假思索地使用 ()。

(基于What do you mean "cannot use parentheses?")

关于function - MsgBox ""与 VBScript 中的 MsgBox(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13620748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com