主题:Maxumi的Turbo Pascal诡异教程第1讲
使用过程类型/函数类型的变量:
语法格式:
type
ptype=procedure; {过程类型ptype}
ftype=function: Integer;{函数类型ftype, ftype类型变量的返回值是integer}
var
m:ptype; {ptype类型变量m}
n:ftype; {ftype类型变量n}
注意: 要使用过程类型/函数类型的变量, 你应该打开编译开关{$F+}.
使用举例:
{此程序非原创, 这是Turbo Pascal中example文件夹下的ProcVar.pas, 我只是翻译了注释而已}
{$F+}
program ProcVar;
type
IntFuncType = function(x, y: integer): integer;
{函数类型IntFuncType, IntFuncType类型变量有x, y两个参数, 返回值是integer}
var
IntFuncVar: IntFuncType;
procedure DoSomething(Func: IntFuncType; x, y: integer);
begin
Writeln(Func(x, y)); {调用函数Func并输出结果}
end;
function Add(x, y : integer): integer;
begin
Add:=x + y;
end;
function Sub(x, y : integer): integer;
begin
Sub:=x - y;
end;
begin
DoSomething(Add, 1, 2); {相当于Writeln(Add(1, 2));}
DoSomething(Sub, 1, 2); {相当于Writeln(Sub(1, 2));}
IntFuncVar:=Add; {注意这是赋值, 不是调用}
DoSomething(IntFuncVar, 3, 4); {这才是调用}
IntFuncVar:=Sub; {注意这是赋值, 不是调用}
DoSomething(IntFuncVar, 3, 4); {这才是调用}
end.
语法格式:
type
ptype=procedure; {过程类型ptype}
ftype=function: Integer;{函数类型ftype, ftype类型变量的返回值是integer}
var
m:ptype; {ptype类型变量m}
n:ftype; {ftype类型变量n}
注意: 要使用过程类型/函数类型的变量, 你应该打开编译开关{$F+}.
使用举例:
{此程序非原创, 这是Turbo Pascal中example文件夹下的ProcVar.pas, 我只是翻译了注释而已}
{$F+}
program ProcVar;
type
IntFuncType = function(x, y: integer): integer;
{函数类型IntFuncType, IntFuncType类型变量有x, y两个参数, 返回值是integer}
var
IntFuncVar: IntFuncType;
procedure DoSomething(Func: IntFuncType; x, y: integer);
begin
Writeln(Func(x, y)); {调用函数Func并输出结果}
end;
function Add(x, y : integer): integer;
begin
Add:=x + y;
end;
function Sub(x, y : integer): integer;
begin
Sub:=x - y;
end;
begin
DoSomething(Add, 1, 2); {相当于Writeln(Add(1, 2));}
DoSomething(Sub, 1, 2); {相当于Writeln(Sub(1, 2));}
IntFuncVar:=Add; {注意这是赋值, 不是调用}
DoSomething(IntFuncVar, 3, 4); {这才是调用}
IntFuncVar:=Sub; {注意这是赋值, 不是调用}
DoSomething(IntFuncVar, 3, 4); {这才是调用}
end.