本公开的实施方式提供了一种基于函数重载决议的函数处理方法、介质及装置,涉及计算机技术领域。该方法包括:响应于函数调用指令,确定函数调用指令所指示的待调用函数的名称、实参类型以及上下文类型;其中,函数调用指令用于指示调用函数;根据待调用函数名称、实参类型以及上下文类型,确定函数候选集合;其中,函数候选集合中包括至少一个候选函数,候选函数的名称和待调用函数的名称相同,候选函数的形参类型为实参类型的父类型,候选函数的返回类型为上下文类型的子类型;若函数候选集合包括多个候选函数,则根据候选函数的返回类型,确定决议结果。通过上述方法,本公开的方法使得确定出的目标函数更加准确,符合调用需求。符合调用需求。符合调用需求。
【技术实现步骤摘要】
基于函数重载决议的函数处理方法、介质及装置
[0001]本公开的实施方式涉及计算机领域,更具体地,本公开的实施方式涉及一种基于函数重载决议的函数处理方法、介质及装置。
技术介绍
[0002]本部分旨在为权利要求书中陈述的本公开的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
[0003]在计算机编程领域中,可以采用同一个函数名来命名多个函数,且多个函数的函数类型(例如,函数类型中的形参类型和/或返回类型等)互不相同,进而可以将上述函数称作重载函数。
[0004]然而,当同一函数名对应多个函数时,在实际调用过程中,如何在多个函数中选择出符合当前调用需要的函数是一个亟需解决的问题。
技术实现思路
[0005]本公开提供一种基于函数重载决议的函数处理方法、介质及装置,以解决相关技术中的函数重载决议方法所确定的函数无法满足实际调用需求的问题。
[0006]在本公开实施方式的第一方面中,提供了一种基于函数重载决议的函数处理方法,包括:
[0007]响应于函数调用指令,确定所述函数调用指令所指示的待调用函数的名称、实参类型以及上下文类型;其中,所述函数调用指令用于指示调用函数;所述实参类型表征所述函数调用指令中所包括的待传入所述待调用函数的实际参数的类型;所述上下文类型表征所述函数调用指令所指示的调用结果类型;
[0008]根据所述待调用函数名称、所述实参类型以及所述上下文类型,确定函数候选集合;其中,所述函数候选集合中包括至少一个候选函数,所述候选函数的名称和所述待调用函数的名称相同,所述候选函数的形参类型为所述实参类型的父类型,所述候选函数的返回类型为所述上下文类型的子类型;所述返回类型表征所述候选函数的返回值的类型;
[0009]若所述函数候选集合包括多个候选函数,则根据所述候选函数的返回类型,确定决议结果;其中,所述决议结果用于指示在所述函数候选集合中是否可以确定出唯一的目标函数。
[0010]在本公开的一个实施例中,根据所述候选函数的返回类型,确定决议结果,包括:
[0011]若所述函数候选集合包括第一函数,且所述第一函数的数量为一个,则确定所述第一函数为目标函数,其中,所述第一函数的返回类型为所述函数候选集合中的其余全部候选函数的返回类型的子类型。
[0012]在本公开的一个实施例中,根据所述候选函数的返回类型,确定决议结果,包括:
[0013]若所述函数候选集合中不存在所述第一函数,或者,所述函数候选集合中的第一函数数量为多个,则确定所述函数候选集合中不存在目标函数。
[0014]在本公开的一个实施例中,根据所述候选函数的返回类型,确定决议结果,包括:
[0015]根据所述形参类型和所述返回类型,确定决议结果。
[0016]在本公开的一个实施例中,根据所述形参类型和所述返回类型,确定决议结果,包括:
[0017]若确定所述函数候选集合包括第二函数,且所述第二函数的数量为一个,则确定所述第二函数为目标函数;所述第二函数的形参类型为所述函数候选集合中的其余全部候选函数的形参类型的子类型,且所述第二函数的返回类型为所述函数候选集合中的其余全部候选函数的返回类型的子类型。
[0018]在本公开的一个实施例中,根据所述形参类型和所述返回类型,确定决议结果,包括:
[0019]若确定所述函数候选集合中不存在第二函数,或者,所述函数候选集合中包括的第二函数的数量为多个,则确定不存在目标函数。
[0020]在本公开的一个实施例中,确定所述函数候选集合中不存在第二函数,包括:
[0021]确定候选函数所对应的元组,所述元组包括所述候选函数的形参类型和所述候选函数的返回类型;
[0022]重复以下步骤,直至i的取值大于预设值:针对于第i个元组和第j个元组,若确定所述第i个元组中存在一个形参类型并非所述第j个元组中的形参类型的子类型,或者所述第i个元组中的返回类型并非所述第j个元组中的返回类型的子类型,则确定所述第i个元组不是第二函数;令i的取值加1;其中,i为正整数,j为正整数,且i和j的取值不同;所述预设值为所述函数候选集合中候选函数的总数量;
[0023]若确定所有候选函数都并非第二函数,则确定所述函数候选集合中不存在第二函数。
[0024]在本公开的一个实施例中,根据所述形参类型和所述返回类型,确定决议结果,包括:
[0025]若确定所述函数候选集合中存在多个第一函数,则获取所述第一函数的形参类型;所述第一函数的返回类型为所述函数候选集合中的其余全部候选函数的返回类型的子类型;
[0026]若在所述多个第一函数中包括第三函数,且所述第三函数的数量为一个,则确定所述第三函数为目标函数;所述第三函数的形参类型为所述多个第一函数中其余全部第一函数的形参类型的子类型。
[0027]在本公开的一个实施例中,根据所述形参类型和所述返回类型,确定决议结果,包括:
[0028]若所述多个第一函数中不存在第三函数,或者,所述多个第一函数中包括多个所述第三函数,或者,所述函数候选集合中不存在第一函数,则确定不存在目标函数。
[0029]在本公开的一个实施例中,根据所述形参类型和所述返回类型,确定决议结果,包括:
[0030]若确定所述函数候选集合中包括第一函数,且所述第一函数的数量为一个,则确定所述第一函数为所述目标函数。
[0031]在本公开的一个实施例中,根据所述形参类型和所述返回类型,确定决议结果,包
括:
[0032]若确定所述函数候选集合中存在多个第四函数,则获取所述第四函数的返回类型;所述第四函数的形参类型为所述函数候选集合中的其余全部候选函数的形参类型的子类型;
[0033]若在所述多个第四函数中包括第五函数,且所述第五函数的数量为一个,则确定所述第五函数为目标函数;所述第五函数的返回类型为所述多个第四函数中其余全部第四函数的返回类型的子类型。
[0034]在本公开的一个实施例中,根据所述形参类型和所述返回类型,确定决议结果,包括:
[0035]若在所述多个第四函数中不存在所述第五函数,或者,所述第五函数的数量为多个,或者,所述函数候选集合中不存在所述第四函数,则确定不存在目标函数。
[0036]在本公开的一个实施例中,根据所述形参类型和所述返回类型,确定决议结果,包括:
[0037]若确定所述函数候选集合中包括第四函数,且所述第四函数的数量为一个,则确定所述第四函数为所述目标函数。
[0038]在本公开的一个实施例中,还包括:
[0039]若所述决议结果表征存在目标函数,则根据所述目标函数和所述函数调用指令所对应的实参,确定函数调用结果。
[0040]在本公开的一个实施例中,还包括:
[0041]若所述决议结果表征不存在目标函数,则返回第一错误信息,所述第一错误信息用于表征无法确定目标函数。
[0042]在本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种基于函数重载决议的函数处理方法,包括:响应于函数调用指令,确定所述函数调用指令所指示的待调用函数的名称、实参类型以及上下文类型;其中,所述函数调用指令用于指示调用函数;所述实参类型表征所述函数调用指令中所包括的待传入所述待调用函数的实际参数的类型;所述上下文类型表征所述函数调用指令所指示的调用结果类型;根据所述待调用函数名称、所述实参类型以及所述上下文类型,确定函数候选集合;其中,所述函数候选集合中包括至少一个候选函数,所述候选函数的名称和所述待调用函数的名称相同,所述候选函数的形参类型为所述实参类型的父类型,所述候选函数的返回类型为所述上下文类型的子类型;所述返回类型表征所述候选函数的返回值的类型;若所述函数候选集合包括多个候选函数,则根据所述候选函数的返回类型,确定决议结果;其中,所述决议结果用于指示在所述函数候选集合中是否可以确定出唯一的目标函数。2.根据权利要求1所述的方法,根据所述候选函数的返回类型,确定决议结果,包括:若所述函数候选集合包括第一函数,且所述第一函数的数量为一个,则确定所述第一函数为目标函数,其中,所述第一函数的返回类型为所述函数候选集合中的其余全部候选函数的返回类型的子类型。3.根据权利要求2所述的方法,根据所述候选函数的返回类型,确定决议结果,包括:若所述函数候选集合中不存在所述第一函数,或者,所述函数候选集合中的第一函数数量为多个,则确定所述函数候选集合中不存在目标函数。4.根据权利要求1所述的方法,根据所述候选函数的返回类型,确定决议结果,包括:根据所述形参类型和所述返回类型,确定决议结果。5.根据权利要求4所述的方法,根据所述形参类型和所述返回类型,确定决议结果,包括:若确定所述函数候选集合包括第二函数,且所述第二函数的数量为一个,则确定所述第二函数为目标函数;所述第二函数的形参类型为所述函数候选集合中的其余全部候选函数的形参类型的子类型,且所述第二函数的返回类型为所述函数候选集合中的其余全部候选函数的返回类型的子类型。6.根据权利要求5所述的方法,根据所述形参类型和所述返回类型,确定决议结果,包括:若确定所述函数候选集合中不存在第二函数,或者,所述函数候选集合中包括的第二函数的数量...
【专利技术属性】
技术研发人员:朱子润,
申请(专利权)人:杭州朗和科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。