Eur*_*lli 20
我理解你不喜欢答案"用行号开头",但你不能与事实争论.这正是他们的意思.
VBA/VB6的语法设计为向后兼容QuickBasic的语法,在此之前使用GW-Basic/MS-Basic的语法,可以追溯到1970年代后期甚至更早:原始的达特茅斯BASIC语言是创建于60年代.
在MS-Basic中,与该时代的其他所有Basic实现一样,您添加到程序中的每一行都必须以行号开头.行号告诉Basic解释器两件事:a)你正在存储行(否则解释器会立即执行它),以及b)行所属程序的位置.为什么这么神秘?因为当Basic被发明时,它是一个交互式的,在一个电传式打印终端上,唯一的交互形式是命令行提示的世界.
而且没有标签.
典型的Basic会话可能看起来像这样,其中>代表命令处理器提示符(这是组成的,但足够接近它的工作方式).请记住:没有光标键或屏幕.你正在打字机上打字 - 用一卷纸而不是一个屏幕 - 打字机也会在纸上打印回复你!:
Welcome to B.A.S.I.C.
Ok <--- Ok told you the interpreter was ready
>LIST <--- print the program
Ok <--- No program, so nothing to list.
>PRINT 2 + 7 <--- No line number, so execute immediately
9 <--- The command executes
Ok
>30 PRINT 2 + 7 <--- Line number, so store the command in position 30
Ok
>10 I = 42 <--- Line number, so store in line 10
Ok
>20 PRINT I + 12 <--- Store on line 20, so insert between 10 and 30
Ok
>LIST <--- Print the program so far
10 I = 42
20 PRINT I + 12
30 PRINT 2 + 7
Ok
>RUN <--- Execute the stored program now
54 <--- line 10 has no output. Line 20 outputs this
9 <--- line 30 outputs this
Ok <--- Done running the program
>20 <--- an empty line number: it means delete the line
Ok
>LIST
10 I = 42
30 PRINT 2 + 7 <--- line 20 is gone!
Run Code Online (Sandbox Code Playgroud)
原始?也许,但你必须从某个地方开始.
那时候,你总是通过提供你希望代码跳转的行号来使用GOTO.它只是它的工作方式.例如:
10 PRINT "Testing, "
20 I = 1
30 PRINT I; ","
40 IF I >= 3 THEN 60
50 GOTO 30
60 END
Run Code Online (Sandbox Code Playgroud)
QuickBasic是Microsoft发布的Basic的增强版本,支持可选地将程序编译为可执行文件,而不是以交互方式在解释器中运行.除了其他增强功能外,它还添加了以下两个功能:
因为它使用功能齐全的GUI文本编辑器全屏运行,所以不需要行号来指定每个新行的去向; 你只需移动光标并输入:传统的行号现在是可选的.事实上,他们感到气馁,因为在一个功能齐全的编辑器中,他们只是挡路了.但他们不能只删除它们因为它们对BASIC兼容性如此重要,所以它们仍然受到支持.他们仍然是,甚至在VBA.
由于他们不希望您使用行号,因此他们需要替代需要行号作为目标的命令,例如GOTO.您现在可以放置可用作GOTO等目标的行文本标签.
因此,您可以看到行号不仅仅是"由数字构成的行标签".它们实际上是一种替代语法,为了与旧版本的语言兼容而保持这种语法.
而已.帮助文件只是简单地告诉你GOTO的"现代"语法(带有文本标签),而且 - 如果你真的想要 - 你仍然可以使用遗留语法,包括中间发明的行号和遗留GOTO语法-1960的.
Sub Jump()
10 Dim A As Integer
20 A = 25
30 GoTo 50
40 A = 50
50 Debug.Print A
End Sub
Run Code Online (Sandbox Code Playgroud)
这是旧的(非常古老的)BASIC日的回归,需要行号.现在使用标签.
Sub Jump2()
Dim A As Integer
A = 25
GoTo JumpToHere
A = 50
JumpToHere:
Debug.Print A
End Sub
Run Code Online (Sandbox Code Playgroud)
但是使用GoTo被认为是糟糕的编程,除了 OnError GoTo ...
| 归档时间: |
|
| 查看次数: |
88953 次 |
| 最近记录: |