| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 959 人关注过本帖
标题:&的一些疑惑
只看楼主 加入收藏
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用sylknb在2015-11-25 12:00:36的发言:

谢谢!回答如此详细。1)我问的的数组cstr(i)为什么前面加了&它可以形成一个表达式?假如I=1为“_ls",kc&cstr(i)--->kc_ls
2)字段函数fields(i)为什么前面不能用&fields(i),一定要用a=fields(i)然后再用&a
3)前面你的列子中2、AB(1)="1";?"AB&AB(1)" → 得到的结果为:AB1 在命令窗口不能运行?

第(1)个问题:其实你仔细读我的第2、3个栗子应该不会再问了;
第(2)个问题:&的语法规定其后只能跟随字符型变量,而不能是其它类型的变量,也不能是常量、函数,或具有运算符的表达式。FIELDS()是一个函数,自然就不能运用宏替换了;
第(3)个问题:这是两条命令,只不过我偷懒,写在了一行上而已。实测时,应该在命令窗口先键入 AB(1)="1" 回车,再键入 ?"AB&AB(1)" 回车,就能看到大窗口中出现结果 AB1 了。


[此贴子已经被作者于2015-11-25 14:08编辑过]

2015-11-25 14:04
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用sylknb在2015-11-24 11:22:57的发言:

关键是怎样去理解这个表达式,这是关键说来说去如何去理介?难点是如何来理介呢?我要求的就是如何去理介?

突然发现你在11楼提的表达式的问题,就拷贝一段我写的书里的文字供你参考:

表达式是一个统称,FoxPro中任何一种计算数据的式子都被称为表达式。数据可以是各种类型的,不局限于数值型和字符型。一个变量、一个常量、一个函数(这三种被看作是单体表达式),或它们的组合(用各种操作符连接起来的式子)都可以被称为表达式。

根据以上定义:任何字段变量(如:Ks_ls)、内存变量(如:AB1)、常量(包括常数和在VFP中定义的符号常量)(如:.T.、5、{^2015-11-25})、函数(如:FIELDS(2))、用操作符连接起来的式子(如:2+3、AB1<CD2)等,都是合法的VFP表达式。事实上,不仅是VFP,绝大多数编程语言所指的表达式也是这些。

什么叫表达式的一部分呢?请看我在16楼的栗子3、4,用宏替换代出来的那个“1”就是组成表达式“AB1”的一部分(由字符串“AB”加上这个代换出来的“1”共同组成)。

事实上,宏替换不止可以代换出表达式或表达式一部分,它可以代换出一条命令中的子句部分(可以参看第17楼泉城飞狐修正我代码的倒数第三行),甚至整条命令!

不知道以上文字是否能解决你对表达式的困惑?真的搞不懂也不用管,只要记住我16楼的第一句话,把宏替换想得简单些。
2015-11-25 14:23
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
第(3)个问题:这是两条命令,只不过我偷懒,写在了一行上而已。实测时,应该在命令窗口先键入 AB(1)="1" 回车,再键入 ?"AB&AB(1)" 回车,就能看到大窗口中出现结果 AB1 了。
我试了一下,出现错误提示
图片附件: 游客没有浏览图片的权限,请 登录注册
2015-11-25 14:32
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用liuxingang28在2015-11-25 13:37:41的发言:

数组与函数不能混为一谈。cStr(i) 是一个数组,是一个变量,而 fields(i)是一个函数。看来要当好一个老师还真不容易啊。
cStr(i) 是一个数组,是一个变量,就是说数组可以加上&?

[此贴子已经被作者于2015-11-25 15:18编辑过]

2015-11-25 14:41
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
以下是引用sylknb在2015-11-25 14:41:01的发言:

cStr(i) 是一个数组,是一个变量,就是说数组可以加上&?

VFP帮助文件就说得很清楚:
执行宏替换。
& VarName[.cExpression]
参数
& VarName
指定宏替换中引用的内存变量名或数组元素名。
收到的鲜花
  • sylknb2015-11-26 10:41 送鲜花  5朵  
2015-11-25 15:45
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
原来是数组与函数“混帐”了
2015-11-25 15:47
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用sylknb在2015-11-25 14:32:42的发言:

第(3)个问题:这是两条命令,只不过我偷懒,写在了一行上而已。实测时,应该在命令窗口先键入 AB(1)="1" 回车,再键入 ?"AB&AB(1)" 回车,就能看到大窗口中出现结果 AB1 了。
我试了一下,出现错误提示
不是吧?你连这个都会粗问题?数组要经过定义才能用的呀,哪是像你这般上手就用的啊?我这个栗子是假设你已经定义过了AB这个数组啊。好吧,算我前面的楼里没交代清楚吧。
2015-11-25 21:32
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用sylknb在2015-11-25 14:41:01的发言:

cStr(i) 是一个数组,是一个变量,就是说数组可以加上&?
是啊,数组中的每一个元素都是一个独立的内存变量啊,只要符合字符型的特征,就都可以用宏替换操作去代换出来啊。看来,楼主的基础知识有必要去加强一下了。
2015-11-25 21:34
快速回复:&的一些疑惑
数据加载中...
 
   



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

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