然后开始之间的区别?

时间:2019-03-29 10:12:15

标签: delphi

我在编码方面还很陌生,不知道then *insert code*then begin *insert code*之间的好处/缺点/差异。

if ... then
...

if ... then
begin

1 个答案:

答案 0 :(得分:7)

Delphi需要beginend来形成块。它不会通过缩进将代码块保持在一起,例如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

因此,区别不在于thenthen 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语句的一部分,将无条件执行。这就是beginend在这里很重要的原因。