这个问题在这里已有答案:
我是新编码,不知道then *insert code*
和then begin *insert code*
之间的好处/缺点/差异。
if ... then
...
if ... then
begin
德尔福需要begin
和end
来形成块。它不会通过缩进将代码块保持在一起,例如Python确实如此,它使用begin
end
来描述这些块。出于同样的目的,C,C ++,C#,Java和JavaScript等语言使用{
和}
。
在Pascal中,if语句如下:
if <condition> then operation1
或者,如果有else子句:
if <condition> then operation1 else operation2
其中<condition>
可以是任何具有布尔结果的表达式
该操作可以是单个语句,例如
Writeln('Hello')
或者它可以是一个所谓的复合语句,它是一个内部有多个语句的开始结束语块(尽管也允许使用零个或一个语句),例如:
begin
Writeln('Hello');
Writeln('World!')
end
因此,then
和then begin
之间的区别不在于单个语句和复合语句之间。一个公认的相当简单的例子:
if NeedOneLine then
Writeln('Hello, World!') // single statement
else
begin // compound statement: multiple statements enclosed
Writeln('Hello,'); // in "begin" and "end"
Writeln('World!');
end;
上面的代码写入一行或两行。以下代码不使用begin end,看起来很相似,但结果完全不同:
if NeedOneLine then
Writeln('Hello, World!')
else
Writeln('Hello,');
Writeln('World!');
那将写'Hello, World!'
或'Hello,'
并始终跟随'World!'
,因为它完全相同:
if NeedOneLine then
Writeln('Hello, World!')
else
Writeln('Hello,');
Writeln('World!');
换句话说,最后一行不再是if语句的一部分,将无条件执行。这就是为什么begin
和end
在这里很重要的原因。