我大约 5 年前使用过 Visual Basic。
但我从 5 年前开始使用 delphi(当时大多数开发人员从 delphi 跳到 Visual Studio)delphi 和 VB 一样简单,同时又非常强大。自 pascal 以来,Delphi 发生了许多变化(例如:在 pascal 中必须以不同的方式组合字符串,而不仅仅是使用 + ),以便使脚本编写更快。
但是为什么在delphi中我们必须在顶部声明var,当我为一个过程编写许多语句时,我必须向上滚动并声明一个var然后再次向下滚动。 delphi 是世界上最好的(有时也是唯一的)最快速的 IDE 之一,但为什么他们不支持在任何地方声明变量,就像在 vb c# 等中一样
可以使用代码模板在过程中间声明 var,并且在较新的 Delphi 版本中,Live 模板也默认启用该功能。
我只需输入
var
,然后按 CTRL+J 并输入名称,然后输入 IDE 即可完成剩下的工作。
对我来说没什么大不了的。
Mike Rozlog 的实时模板演示:
如果必须滚动,则说明你的方法太长,可能需要重构。
也就是说,在最新版本的 Delphi 中 您可以使用重构系统来声明变量而无需移动光标。
这个比 Jens 的 Ctrl-J 快捷键还要好。
编写您的代码,例如:
I := 0;
请注意,“I”下方有一条红色波浪线(表示它未声明)。
单击“I”并输入快捷键:Shift+Ctrl+V
Up 将弹出一个声明变量窗口,通常会为您找出正确的类型。
如有必要,更改类型并按 Enter 键关闭窗口。
我喜欢这个快捷方式并且一直使用它。
您问了这个问题:“为什么他们不支持在任何地方声明变量,就像在 vb c# 等中一样”
答案如下:因为语言设计者认为内联声明变量令人困惑且难以阅读。如果所有变量都在方法级别声明,则很容易找到它们的声明并且很容易确定它们的类型。他们认为内联声明使得跟踪变量及其类型变得困难。
其他语言设计者更喜欢内联声明变量的能力,但代码和变量声明之间清晰的界限是许多人喜欢 Pascal 的原因之一。
从 Delphi 10.3 Rio 版本开始,可以声明变量和常量内联。
连类型都可以推断出来。
示例:
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-in
或 for-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;
所以我无法发表评论,因为我没有足够的业力。我在 Delphi Rio 上使用内联声明会引发错误。我怎样才能激活这个?