之间的差异然后开始? [重复]

问题描述 投票:-1回答:1

这个问题在这里已有答案:

我是新编码,不知道then *insert code*then begin *insert code*之间的好处/缺点/差异。

if ... then
...

if ... then
begin
delphi
1个回答
7
投票

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

因此,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;

上面的代码写入一行或两行。以下代码不使用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语句的一部分,将无条件执行。这就是为什么beginend在这里很重要的原因。

© www.soinside.com 2019 - 2024. All rights reserved.