代码之家  ›  专栏  ›  技术社区  ›  Vibeeshan Mahadeva

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

  •  3
  • Vibeeshan Mahadeva  · 技术社区  · 15 年前

    我使用VisualBasic大约5年前。

    但我5年前就开始使用Delphi了(当时大多数开发人员都从Delphi跳到了Visual Studio),Delphi和VB一样简单,同时它也是RAD和健壮的。Delphi自Pascal以来有很多变化(例如:字符串在Pascal中必须以不同的方式组合,而不是仅仅使用+)以加快脚本编写速度。

    但是为什么在Delphi中,我们必须在顶部声明var,当我为一个过程编写许多语句时,我必须向上滚动并声明一个var,然后再次向下滚动。Delphi是世界上最好的(有时也是唯一的)最快速的“est”IDE之一,但为什么它们不支持像在vb c中那样在任何地方声明变量呢?

    5 回复  |  直到 7 年前
        1
  •  2
  •   LU RD    7 年前

    从Delphi10.3rio版本可以声明变量和常量 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;
    
        2
  •  16
  •   Jens Mühlenhoff    15 年前

    可以使用代码模板在过程的中间声明var,默认情况下,在较新的Delphi版本中,也可以使用活动模板启用var。

    我只是打字 var 然后按ctrl+j并输入名称,然后键入ide完成其余操作。

    对我来说没什么大不了的。

    Mike Rozlog的现场模板演示:

    http://edn.embarcadero.com/article/40284

        3
  •  15
  •   Craig Stuntz    15 年前

    如果必须滚动,则方法太长,可能需要重构。

    也就是说,在最近的Delphi版本中 you can declare a variable without moving your cursor by using the refactoring system .

        4
  •  10
  •   lkessler    15 年前

    这比Jens的ctrl-j快捷键更好。

    1. 编写代码,例如:

      I := 0;
      
    2. 请注意,“i”下面有一条弯弯曲曲的红色线(这意味着它是未声明的)。

    3. 单击“i”并键入快捷方式:shift+ctrl+v

    4. up将弹出一个声明变量窗口,该窗口通常会为您找到正确的类型。

    5. 如有必要,更改类型并按Enter关闭窗口。

    我喜欢这条捷径,而且经常使用它。

        5
  •  9
  •   Nick Hodges    15 年前

    你问这个问题:“为什么他们不支持在任何地方声明变量,就像在vb c等中一样。”

    答案是这样的:因为语言设计者认为内联声明变量是令人困惑和难以阅读的。如果所有变量都是在方法级别声明的,那么它们的声明很容易找到,它们的类型也很容易确定。他们认为内联声明使跟踪变量及其类型变得困难。

    其他语言设计者更喜欢内联声明变量的能力,但是代码和变量声明之间的清晰划分是许多人喜欢Pascal的原因之一。

    推荐文章