为什么find命令必须以'&'开头?

时间:2019-04-17 11:39:08

标签: visual-foxpro

我是中国学生。首先,我的英语很差。哈哈~~~ 我对Visualfox Pro的某些语法规则感到非常困惑。

我的表中有一个名为id的字符字段,请运行以下命令以查找其id等于“ A0001”的记录:

DetailViewController

&id返回变量名A0001,我只想知道解释器如何将变量名与表中的字符字段进行比较?

对于上面的代码,也可以像下面这样重写:

index on id tag _id
id='A0001'
find &id

2 个答案:

答案 0 :(得分:1)

如果您的变量名称与当前所选表中的字段名称相同,则在引用该变量时将使用该字段的内容。您可以通过在前缀前面加上“ m”来避免这种情况。 (表示使用内存变量而不是字段)。这样做:

id = 'A001' && assignment always goes to the variable

SEEK m.id

&技术可能有用的一种方式是,如果您要引用以下几个值之一:

id1 = 'A001'

id2 = 'B002'

to_find = 'm.id2'

SEEK &to_find && Acts like: SEEK m.id2

答案 1 :(得分:-1)

所有有关编译器和解释器的工作方式。他们分享了相同的3个步骤:

  
      
  • 步骤1(称为词法分析):编译器将提交的源代码分解为称为lexemes的有意义的元素,并生成一个   来自词位的令牌序列。

  •   
  • 第2步(称为语法分析):编译器使用在词法分析期间生成的标记序列来生成树状结构   数据结构,称为抽象语法树,AST

  •   
  • 步骤3(称为语义分析):编译器使用语法分析过程中生成的AST来检查程序是否一致   带有源编程语言的所有规则

  •   

因此,“&”是一个符号,因此他们可以识别出它是一个变量,而没有找到字符串名称“ id”