FAQ > 金融建模 > 建模问题 > 平台使用

Q:关于用户函数与公用函数同名时,优先调用哪个函数?    

  • A:
    1、如果执行的主函数是用户函数(无同名公用函数),其调用子函数时存在调用优先级:优先调用用户函数;
    2、如果执行的主函数是公用函数(无同名用户函数),其调用子函数时存在调用优先级:优先调用用户函数;
    3、如果执行的函数有同名的公用函数和用户函数,提交执行函数时,会标记执行的账号名,其调用的子函数也同样会标记该账号名。
    执行的主函数是同名用户函数时,调用的子函数也会优先调用用户函数。被调用函数不存在用户函数时,再调用公用函数。
    执行的主函数是同名公用函数(system账号)时,调用的子函数仅会调用公用函数。如果被调用的子函数不存在公用函数,则会报错提示被调用的子函数不存在。可以通过user("用户名").子函数()的方式来指定调用用户账户下的子函数,解决该问题。
    如果执行的主函数是用户函数,调用子函数存在同名公用函数和用户函数,由于默认调用用户函数,可以采用上述方法,通过user('system').子函数()方式调用同名公用函数

    例如:fun1(主函数)调用fun2(子函数).

    情景一:fun1只有用户函数,fun2仅存在公用函数。
    执行fun1(用户函数),会调用到fun2(公用函数)。

    情景二:fun1只有用户函数,fun2存在同名公用函数和用户函数
    执行fun1(用户函数),会调用到fun2(用户函数)。

    情景三:fun1 仅有公用函数,fun2只有用户函数
    执行fun1(公用函数),会调用到fun2(用户函数)。

    情景四:fun1仅有公用函数,fun2 既有公用函数,又有用户函数,
    1、执行fun1(公用函数),优先调用fun2(用户函数)。

    情景五:fun1存在同名公用函数和用户函数,fun2 仅有公用函数
    1、执行fun1(公用函数),会调用到fun2(公用函数)。
    2、执行fun1(用户函数),会调用到fun2(公用函数)。

    情景六:fun1存在同名公用函数和用户函数,fun2 仅有用户函数
    1、执行fun1(公用函数),调用报错:不存在fun2函数。可以通过user("用户名").fun2()的方式来指定调用用户账户下的fun2,解决该问题。
    2、执行fun1(用户函数),会调用到fun2(用户函数)。

    情景七:fun1存在同名公用函数和用户函数,fun2 存在同名公用函数和用户函数
    1、执行fun1(公用函数),会调用到fun2(公用函数)。
    2、执行fun1(用户函数),会调用到fun2(用户函数)。