从恐龙时代开始,Turbo Pascal和现在的Delphi都有一个Write()和WriteLn()程序,可以悄悄地做一些简洁的事情.
参数的数量是可变的;
每个变量可以是各种类型的; 你可以提供整数,双打,字符串,布尔值,并按任意顺序混合它们;
您可以为每个参数提供其他参数:
写( '你好':10, '世界!':7); //对齐参数
它甚至在代码完成drowdown中以特殊方式显示:
写([var F:File]; P1; [...,PN])
WriteLn([var F:File]; [P1; [...,PN]])
现在我输入了这个,我注意到Write和WriteLn在代码完成下拉列表中没有相同的括号.因此看起来这不是自动生成的,但它是由某人硬编码的.
无论如何,我能够自己编写这样的程序,还是所有这些神奇的硬编码编译技巧?
Writeln就是我们所说的编译器"魔术"功能.如果你查看System.pas,你将找不到一个像你期望的那样声明的Writel.编译器从字面上将其全部分解为对各种特殊运行时库函数的单独调用.
简而言之,在没有修改编译器的情况下,无法实现与内置writeln完全相同的自己的版本.