我在编码方面还很陌生,不知道then *insert code*
和then begin *insert code*
之间的好处/缺点/差异。
if ... then
...
if ... then
begin
答案 0 :(得分:7)
Delphi需要begin
和end
来形成块。它不会通过缩进将代码块保持在一起,例如Python做到了,它使用begin
end
来描述这些块。出于相同的目的,诸如C,C ++,C#,Java和JavaScript之类的语言改用{
和}
。
在Pascal中, if语句如下:
if <condition> then operation1
或者,如果有其他条款:
if <condition> then operation1 else operation2
<condition>
可以是任何具有布尔结果的表达式
该操作可以是单个语句,例如
Writeln('Hello')
或者它可以是所谓的 compound语句,它是一个内部包含多个语句(尽管也允许零或一个语句)的begin-end块,例如:
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;
上面的代码写一行或两行。以下不使用开始结尾的代码看起来相似,但结果完全不同:
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
在这里很重要的原因。