大约5年前我使用过visual basic。
但是我已经开始使用5年前的delphi(当大多数开发人员从delphi跳到visual studio时)delphi就像vb一样简单,同时它也非常强大。自从pascal以来Delphi有很多变化(例如:字符串必须以不同的方式组合在pascal中而不是仅仅使用+)才能更快地编写脚本。
但是为什么在delphi中我们必须声明var在顶部,当我为一个过程编写许多语句时,我必须向上滚动并声明一个var并再次降低。 delphi是世界上最好的(有时是唯一的)MOST RAPID'est'IDE之一,但为什么他们不支持在vb c#etc等地声明变量
答案 0 :(得分:16)
可以使用代码模板在过程中间声明一个var,默认情况下也可以在较新的Delphi版本中使用Live模板启用。
我只需输入var
,然后按CTRL + J并输入名称并输入IDE完成剩下的工作。
对我来说没什么大不了的。
Mike Rozlog演示了实时模板:
答案 1 :(得分:15)
如果你必须滚动,你的方法太长,可能需要重构。
也就是说,在最新版本的Delphi you can declare a variable without moving your cursor by using the refactoring system中。
答案 2 :(得分:10)
甚至比Jens的Ctrl-J快捷方式更好。
编写代码,例如:
I := 0;
请注意,“我”下面有一条红色的波浪线(意思是未声明)。
点击“我”并输入快捷键:Shift + Ctrl + V
Up会弹出一个声明变量窗口,通常会为你找出正确的类型。
如有必要,请更改类型,然后按Enter键关闭窗口。
我喜欢这条捷径并一直使用它。
答案 3 :(得分:9)
你问了这个问题:“为什么他们不支持在vb c#etc中的任何地方声明变量”
答案是:因为语言设计者认为内联声明变量令人困惑且难以阅读。如果所有变量都是在方法级别声明的,那么它们的声明很容易找到,并且它们的类型很容易确定。他们认为内联声明很难跟踪变量及其类型。
其他语言设计者更喜欢内联声明变量的能力,但代码和变量声明之间的清晰划分是许多人更喜欢Pascal的原因之一。
答案 4 :(得分:2)
从Delphi版本10.3 Rio可以声明变量和常量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-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;