gpt4 book ai didi

java - Delphi 有 block 标签吗?

转载 作者:行者123 更新时间:2023-11-29 07:56:48 25 4
gpt4 key购买 nike

在 Java 中我们可以做这样的事情:

 String output = "";

stop: {
// count 10 lines

for ( int row = 1; row <= 10; row++ ){
// count 5 columns

for ( int column = 1; column <= 5; column++ {
if ( row == 5 )
break stop;
output += "* ";

}

output += "\n";
}
output += "\nTerminated Ok.";
}

结果打印了 10 行,但在 5 行结束:

 * * * * *
* * * * *
* * * * *
* * * * *
* * * * *

是否有 Delphi 等价物?

最佳答案

Delphi 不支持相当于 Java 的 break to label。

考虑以下几点:

for i := 1 to 10 do
for j := 1 to 10 do
if ... then break;

在 Delphi 中,break 总是跳出最里面的语句,即上例中的 j for 循环。

在 Java 中,您可以标记一个 block 并跳出该标记 block 。所以在 Java 中,您可以使用带标签的 break 跳出 i for 循环。例如:

outerloop: {
for (int i = 1; i < 10; i++) {
for (int j = 1; j < 10; j++) {
if (...) break outerloop;
}
}

这样的中断在 Delphi 中是不可能的。 Delphi 中最接近的等价物是可怕的goto,它仍然是considered harmful。 .

{$APPTYPE CONSOLE}

uses
SysUtils, Classes;

var
i, j: Integer;

label
outerloopend;

begin
for i := 1 to 10 do
begin
for j := 1 to 10 do
begin
if i>5 then
goto outerloopend;
Write(Format('%d,%d ', [i, j]));
end;
Writeln;
end;
outerloopend:
Writeln('Edsger Dijkstra, sorry for using goto!');
Readln;
end.

关于java - Delphi 有 block 标签吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17191314/

25 4 0