回 帖 发 新 帖 刷新版面

主题:VF参数的传递

用do 文件名 with <参数表>传递参数
用para <参数表>接受参数 书上说实参与形参一般情况下个数相同,类型相同,实参在传递之前,肯定已经定义了类型与值,那形参PARA语句是放在子程序第一条语句上的, 形参没有定义啊,怎么能和实参的类型相同呢?实参与形参不同名,形参没有定义,应该找不到形参变量才对啊?有没有高手指点一下迷津,I LIKI FOX在哪儿,帮帮忙
另外,使用DO。。。WITH语句传递参数的时候,需要考虑变量的作用域问题嘛,比如我把要传递的变量参数,定义为本地变量,是不是就不可以传递给子程序了?

回复列表 (共2个回复)

沙发

这个问题我试着回答一下,答不对不要加分,但绝不可以骂我,我脸皮薄:
实参在使用do ...with ...时用with后面的列表传递给形参,形参不需要定义类型,但你必须知道它的类型,并在子程序中(或者表单中)使用时注意数据类型的适用性.比如说形参是a,b,c,实参是'1','2',3,
用do xxx with '1','2',3
在子程序的第一行用 parameters a,b,c接受实参,在子程序中引用参变量a,b,c时你知道a和b是字符型,c是数值型就够了.这样你就不会写出象 sum = a+b+c这样的错误语句.
当然实参和形参个数也可以不一样,当形参为三个,实参为两个时,第三个形参将不被赋值,那么它的值就可能是 .f. ,用type('c') = 'U'就可以确定它没有被传递实参.
所以在子程序中首次使用形参变量前先用type('<形参名>')判断该形参是否被传值,然后再决定怎么用它.

实参的传递有两种方式,一种是直接传值(常量),另一种是用变量传值(用变量名将该变量的值传给子程中的形参),这时不需要考虑变量的作用域.因为变量不需进入到子程里去,只是把它的值传过去而已.

板凳

传递过去的是值,所以叫什么都无所谓,只需要知道第一个是谁,第二个,......

在vfp中按地址传送的不多,&(宏替换)算一个

真正在API中应用较多,做CS时SPT中也较常见

我来回复

您尚未登录,请登录后再回复。点此登录或注册