Function 命 令

定义一个用户自定义函数

语 法

FUNCTION FunctionName Commands

[RETURN [ eExpression ]] ENDFUNC

参 数 描 述

FunctionName

Function 命 令 - 图1Function 命 令 - 图2在 V isual FoxPro 中 函 数 名 最 长 不 超 过 254 个 字 符

Function 命 令 - 图3Function 命 令 - 图4如果要区分超过 10 个字符的程序文件名与以相同的 10 十个字符开头的函数 使用引号将程序文件名包围起来或在程序文件名后包含一个扩展名

说 明

Function 命 令 - 图5Function 命 令 - 图6Function 命 令 - 图7Function 命 令 - 图8许多程序中 都要经常重复运行若干例程 把公用例程定义为单独的函数可以减小程序的大小及其复杂性 也有利于程序的维护

Function 命 令 - 图9Function 命 令 - 图10Function 命 令 - 图11在程序中使用 FUNCTION FunctionName 语句 它指明程序中某个函数的开始 并用名称标识整个函数

Function 命 令 - 图12Function 命 令 - 图13Function 命 令 - 图14Function 命 令 - 图15Function 命 令 - 图16Function 命 令 - 图17FUNCTION FunctionName 后面是组成该函数的 一系列 Visual FoxPro 命令 可以一在函数的任何地方使用 RETURN 从函数返回调用程序或者另一个程序 并且返回一个由用户定义的函数值 如果没有 RETURN 命令 则当函数结束时自动执行隐式 RETURN 命令 如果 RETURN 命令不含返回值 或者如果执行隐式 RETURN 命

Function 命 令 - 图18Function 命 令 - 图19Function 命 令 - 图20Function 命 令 - 图21Function 命 令 - 图22令 将以真 .T. 作为返回值

Function 命 令 - 图23Function 命 令 - 图24如果发出 DO 命令时包含某个函数名 Visual FoxPro 将按下列顺序搜索该函数

  1. Function 命 令 - 图25Visual

    FoxPro 在包含 DO 命令的文件中搜索

  2. Function 命 令 - 图26Function 命 令 - 图27Function 命 令 - 图28如果在该文件中找不到此函数

    Visual FoxPro 将在打开的过程文件中搜索 过程文件可通过 SET PROCEDURE 命令打开

  3. Function 命 令 - 图29Function 命 令 - 图30Function 命 令 - 图31Function 命 令 - 图32Function 命 令 - 图33如果在打开的过程文件中也找不到此函数

    Visual FoxPro 将在执行链 (execution chain) 的各程序中搜索 首先搜索最近一次执行的程序 然后依次搜索 直到最开始执行的程序

  4. Function 命 令 - 图34Function 命 令 - 图35Function 命 令 - 图36Function 命 令 - 图37Function 命 令 - 图38

    如果仍未找到函数 Visual FoxPro 将搜索独立的程序 如果能够找到匹配的程序文件 则执行该程序 否则 Visual FoxPro 产生错误信息

Function 命 令 - 图39Function 命 令 - 图40在 DO 命令中 包含 IN 子句可以执行指定文件中的函数

Function 命 令 - 图41Function 命 令 - 图42默认情况下 参数以值传递方式传递给函数 有关以引用传递方式向函数传递参数的

Function 命 令 - 图43Function 命 令 - 图44Function 命 令 - 图45Function 命 令 - 图46Function 命 令 - 图47Function 命 令 - 图48Function 命 令 - 图49详细内容 请参阅 SET UDFPARMS 最多可以向函数传递 27 个参数 这些参数可以传递给包含有 PARAMETERS 或者 LPARAMETERS 语句的函数 或者通过在函数姓名后的参数列表来传递 参数列表被包含在一个圆括号中 每一个参数用逗号隔开 示 例

Function 命 令 - 图50Function 命 令 - 图51Function 命 令 - 图52Function 命 令 - 图53Function 命 令 - 图54此 示例 创建了一个名为 Hello 的自定义对象并且添加了一个名为 SayHello .的函数方法 SayHello 方法返回字符串 Hello World 该字符串使用 MESSAG EBOX 函数显示

Function 命 令 - 图55Function 命 令 - 图56注 意 类定义代码放置在实例化对象的程序代码之后

Local oHello oHello=CREATEOBJECT("Hello")

=MESSAGEBOX(oHello.SayHello(),48) RELEASE oHello

  • Class definition code

DEFINE CLASS Hello AS CUSTOM

FUNCTION SayHello RETURN "Hello World"

ENDFUNC ENDDEFINE

请 参 阅

LPARAMETERS, PARAMETERS, PARAMETERS(), PRIVATE, PROCEDURE, PUBLIC, RETURN, SET PROCEDURE, SET UDFPARMS