delphi 我可以在线声明变量而不是在函数的顶部吗?

gcmastyq  于 2023-10-18  发布在  其他
关注(0)|答案(5)|浏览(98)

我在五年前使用过Visual Basic。
但我已经开始使用 Delphi 5年前(当大多数开发人员从delphi跳到visual studio)delphi是一样容易的vb,同时它是rad和健壮的。自Pascal以来, Delphi 有许多变化(例如:在pascal中字符串必须以不同的方式组合,而不是仅仅使用+),以使脚本编写更快。
但是为什么在 Delphi 中我们必须在顶部声明var,当我为一个过程编写许多语句时,我必须向上滚动并声明var,然后再向下滚动。 Delphi 是世界上最好的(有时是唯一的)最快速的IDE之一,但是为什么他们没有给予支持来声明变量,就像在vb c#等中一样。

nkhmeac6

nkhmeac61#

可以使用代码模板在过程中间声明var,并且在较新的 Delphi 版本中,Live模板也默认启用该功能。
我只是键入var,然后按CTRL+J,输入名称,并键入IDE做其余的。
对我来说没什么大不了的。
Mike Rozlog的现场模板演示:
http://edn.embarcadero.com/article/40284

hof1towb

hof1towb2#

如果你必须滚动,你的方法太长了,可能需要重构。
也就是说,在最近的 Delphi you can declare a variable without moving your cursor by using the refactoring system版本中。

sqserrrh

sqserrrh3#

比Jens的Ctrl-J快捷键更好的是这个。
1.编写代码,例如:

I := 0;

1.请注意,“I”下面有一条红色的波浪线(意味着它未声明)。
1.点击“I”并输入快捷方式:Shift+Ctrl+V
1.向上会弹出一个声明变量的窗口,这个窗口通常会为你找到正确的类型。
1.如有必要,更改类型并按Enter关闭窗口。
我喜欢这条捷径,并一直使用它。

nszi6y05

nszi6y054#

你问了这个问题:“为什么他们没有给予支持,以声明变量的任何地方,就像在vb c#等”
答案如下:因为语言设计者觉得内联声明变量是令人困惑和难以阅读的。如果所有变量都在方法级别声明,那么它们的声明很容易找到,并且它们的类型也很容易确定。他们认为内联声明使跟踪变量及其类型变得困难。
其他语言设计者更喜欢内联声明变量的能力,但代码和变量声明之间的清晰界限是许多人喜欢Pascal的原因之一。

vohkndzv

vohkndzv5#

从 Delphi 版本10.3里约可以声明变量和常量inline
甚至类型也可以推断。
示例如下:

procedure Test1;
begin
  var i : Integer;
  i := 10;
  WriteLn(i);
end;

变量可以被内联和赋值:

procedure Test2;
begin
  var i : Integer := 10;
  WriteLn(i);
end;

可以推断出内联变量类型:

procedure Test3;
begin
  var i := 10;
  WriteLn(i);
end;

内联变量的作用域可以限制为开始/结束块:

procedure Test4;
begin
  var i : Integer := 10;
  WriteLn(i);
  if i < 20 then begin
     var j := 30;
  end;
  Write(j); // <- Compiler error “Undeclared identifier: ‘j’”
end;

内联变量可以在for-infor-to循环中使用:

procedure Test5;
begin
  for var i := 1 to 10 do
    WriteLn(i);
end;

常量也可以内联,类型可以推断为普通常量:

procedure Test6;
begin
  const i : Integer = 10;
  const j = 20;
  WriteLn(j);
end;

相关问题