标题:提示找不到变量b
只看楼主
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
DO...WITH 与 PARAMETERS 有点意思
这个看看
CLEAR
B=3
DO SUB WITH 11,B
?B

PROCEDURE SUB
  PARAMETERS B,XX
RETURN

这个常数是什么,B就是什么

[此贴子已经被作者于2022-12-30 16:54编辑过]

2022-12-30 16:50
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
此B非彼B也
2022-12-30 17:04
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用laowan001在2022-12-30 17:04:05的发言:

此B非彼B也

问题是这两个B是对应的,不能少,也不能变
DO SUB WITH 11,B
PARAMETERS B,XX
可见WITH的 11,B 与 PARAMETERS的 B 三者是有关系的。

[此贴子已经被作者于2022-12-30 17:09编辑过]

2022-12-30 17:07
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
得分:0 
我震惊于诸位大侠得闲得咁交关,居然能够一本正经地探讨“有歧义性代码的副作用”——如此这般一个聪明人避之唯恐不及的Bug影重重的稀奇古怪问题……

2022-12-30 22:57
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
以下是引用cssnet在2022-12-30 22:57:39的发言:

我震惊于诸位大侠得闲得咁交关,居然能够一本正经地探讨“有歧义性代码的副作用”——如此这般一个聪明人避之唯恐不及的Bug影重重的稀奇古怪问题……

这样回复问题,对提出问题的人有帮助吗? 编程不是闲谈说笑话。
BUG又如何,不知道不足,又何来进步?

从底层点看,传址就是传数据的内存地址,这个地址是唯一的。
只想了解一下解释语言当相同的变量名出现表达不同的地址时会出现什么问题。
还有,不同的编译器对参数传递的顺序也有不同(从右到左、从左到右),会有不同的结果。
真要搞清楚,还是要看机器码,有兴趣可以去看看,肯定会明白问题所在。

顺便说说,不要动不动就说这是BUG、那是BUG。
试问题那个应用程序敢说自己无BUG,不会因为有BUG就避之则吉。
BUG是不足,做人要勇敢面对BUG,勇于去发现BUG,避BUG改BUG才是万事大吉。




2022-12-31 08:34
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用cssnet在2022-12-30 11:36:48的发言:

讲真,我一向都打醒十三、四、五、六分精神,竭力避免子程序变量与主程序同名,以免无意中修改到上层的变量值,造成不必要麻烦……想不到骨骼清奇的楼主,竟然会唯恐天下不乱?!
呵呵。林子大了。

在VFP白活了几十年,这样做不是不好,只是要费点劲。
一个上层有可能会调用好多个下层,一个下层也有可能会被多个上层调用。
记性要好,记不住还要要出问题,要做个变量名表来查对吗?
VFP本来就有规范这类行为:
    PUBLIC
    LOCAL
    PRIVATE
2022-12-31 08:50
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
以下是引用吹水佬在2022-12-30 17:07:02的发言:


问题是这两个B是对应的,不能少,也不能变
DO SUB WITH 11,B
PARAMETERS B,XX
可见WITH的 11,B 与 PARAMETERS的 B 三者是有关系的。

按逻辑说,do sub with 中的11对应传给parameters 的B,do sub with 中的B对应传给parameters的XX
我现在基本只用function了,如果想改变本地变量的值,则按地址传递参数(@参数),这样也很方便
2022-12-31 10:52
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
以下是引用吹水佬在2022-12-30 16:50:38的发言:

DO...WITH 与 PARAMETERS 有点意思
这个看看
CLEAR
B=3
DO SUB WITH 11,B
?B

PROCEDURE SUB
  PARAMETERS B,XX
RETURN

这个常数是什么,B就是什么

执行结果:3
如果sub中加一句:xx = xx + 1,则执行结果为4
2022-12-31 11:06
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
还是回归正道吧,每个程序管好自己的变量,这样会减少很多烦恼
2022-12-31 11:08
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用laowan001在2022-12-31 10:52:56的发言:


按逻辑说,do sub with 中的11对应传给parameters 的B,do sub with 中的B对应传给parameters的XX
我现在基本只用function了,如果想改变本地变量的值,则按地址传递参数(@参数),这样也很方便

不只是对应传送问题,对调一下也是对应的,但结果就不一样,传送顺序也有问题。
DO SUB WITH B,11
PARAMETERS XX,B
关键点可能是这个“常数”地址问题,变数怎样变也没问题。
2022-12-31 11:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511021-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.172892 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved