这两个真的一样吗?还是不一样?区别在那里啊?(100分)

  • 主题发起人 主题发起人 本公子
  • 开始时间 开始时间

本公子

Unregistered / Unconfirmed
GUEST, unregistred user!
看到这样一段程序:
function A(xxx):Boolean;
function B(xxx): String;
begin
.........
end;
var str:string;
begin
str:=B(xxx);
........
end;

请问这样写与下面的写法有何不同? 为何这样写?
function B(xxx): String;
begin
.........
end;

function A(xxx):Boolean;
var str:String;
begin
str:=B(xxx);
.......
end;

基础没有学好,请大家执教。
 
第一种写法,为子函数,只有在A里才能调用B
第二种写法,A与B是同一等级的,只要在B声明后,谁都可以调用它
 
本公子,
上面的写法,function B(xxx): String 只能由 function A(xxx):Boolean 调用,
属于function A(xxx):Boolean 私有。
  而,下面的写法,function B(xxx): String 也可被别的函数调用。
 
上边的写法中,函数B是定义在函数A中的,也就是B的作用范围只在A中有效,在A函数以外的地方调用函数B是不可以的。
下边的写法中,函数B和函数A的作用范围是相同的,不光A可以调用B,其他地方如果需要也可以调用B。
 
问题都出错了吧:
function A(xxx):Boolean;
var str:string;
////////应该在var之后吧
function B(xxx): String;
begin
.........
end;

begin
str:=B(xxx);
........
end;

两种方式还是那个问题:作用域不同
第一种方式是只有函数A才能调用
第二种方式是凡是在函数B之后的所有过程/函数都可以调用的
 
明白了。多谢几位指教。
 
hongxing_dl:
你来晚了一点,不然也给你点分。

BTW:好像没有出错吧。
B在 var 之前或 var 之后,你自己试一把就知道了。
 
var之前与var之后的区别
var之前不能使用var后定义的变量,反之则可以
 
后退
顶部