b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

pascal 视频教程_pascal和basic_pascal选择排序(61)

电脑杂谈  发布时间:2016-12-28 07:02:37  来源:网络整理

这对浮点类型有些影响。浮点类型通过大小进行匹配,如果在调用时,参数类型和传递的浮点类型不完全匹配、但有一个Variant类型的参数,则采用Variant类型,而不是其它较小的浮点类型(the Variant is taken over any smaller float type)。

比如

procedure foo(i: integer); overload;

procedure foo(d: double); overload;

procedure foo(v: Variant); overload;

var

v: Variant;

begin

foo(1);// integer版本

foo(v);// Variant版本

foo(1.2);// Variant版本(float literals -> extended精度)

end;

这个例子调用foo的Variant版本,而不是double版本,因为常数1.2隐含是extended类型,它和double类型不完全匹配。Extended和Variant类型也不是完全匹配,但Variant类型更通用(尽管double类型比extended类型更小)。

foo(Double(1.2));

- 85 -

Procedures and functions

这个类型转换不起作用,你应该使用指定类型的常数。

const d: double = 1.2;

begin

foo(d);

end;

上面的代码工作正常,将调用double版本。

const s: single = 1.2;

begin

foo(s);

end;

上面的代码也是调用double版本,相对于Variant,single和double更匹配,

当声明一组重载例程时,避免浮点类型解释为Variant类型的最好办法,是在声明Variant版本的同时,为每一种浮点类型(Single、Double、Extended)声明一个版本。

若在重载例程中使用默认参数,要当心不明确的参数调用。关于更多这方面的信息,请参考Default parameters and overloaded routines。

通过在调用例程时限定它的名称,能减少重载例程潜在的影响。比如,Unit1.MyProcedure(X, Y)只能调用在Unit1单元声明的例程,若Unit1中没有和指定的名称以及参数相匹配的例程,错误将发生。

关于在类的继承层次中发布重载方法,请参考Overloading methods;关于在共享库中输出重载例程,请参考The exports clause。

Local declarations(局部声明)

函数体或过程体经常以声明局部变量开始,它们用在例程的语句块中。这里也可以包括常量、类型以及例程声明。局部标志符的作用域被限制在声明它的例程中。

嵌套例程

有时,函数和过程在它的局部声明块中包含其它函数和过程。比如,下面声明了一个叫做DoSomething的过程,它包含一个嵌套过程。

procedure DoSomething(S: string);

var

X, Y: Integer;

procedure NestedProc(S: string);

begin

...

end;

begin

...

NestedProc(S);

...

end;

嵌套例程的作用域限制在声明它的过程或函数中,在我们的例子中,NestedProc只能在DoSomething内部调用。

关于嵌套例程的实际应用,请参考SysUtils单元的DateTimeToString过程、ScanDate函数以及其它例程。 - 86 -


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-61.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 徐娜
      徐娜

      就是容许这些女青年带着自己父母

    热点图片
    拼命载入中...