CN109117124A - 一种多返回值的函数编程方法 - Google Patents
一种多返回值的函数编程方法 Download PDFInfo
- Publication number
- CN109117124A CN109117124A CN201810655418.4A CN201810655418A CN109117124A CN 109117124 A CN109117124 A CN 109117124A CN 201810655418 A CN201810655418 A CN 201810655418A CN 109117124 A CN109117124 A CN 109117124A
- Authority
- CN
- China
- Prior art keywords
- component
- function
- constructing
- variable
- movement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/37—Compiler construction; Parser generation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种多返回值的函数编程方法,包括:定义多个变量,并获取每一个变量的ID号;选择一个能够返回多个值的动作函数,并***用于承载返回值的变量;修改动作函数的返回值的变量名为已经定义的用于承载返回值的变量ID号,同时修改动作函数输入参数的变量名为已经定义的其他变量ID号;保存代码,执行动作函数,通过一个动作函数实现返回多个返回值。本发明方法对于需要多返回值的场景可以通过一个函数实现,不再需要分别定义不同的功能函数实现,降低了代码量;本发明降低了软件的开发难度,提高了代码的复用率。
Description
技术领域
本发明涉及计算机技术领域,具体地,涉及一种多返回值的函数编程方法。
背景技术
随着科技和社会的快速发展,计算机软件工程变得越来越重要,各行各业中的机械自动化、智能化控制、互联网、物联网等等对于软件开发的效率、控制或运行速度等要求也越来越多。
软件工程应用中,传统的编程方法,其返回一个函数的返回值时,往往是只能返回一个值或者一个整体的值。但是在实际的编程开发时,经常会要求一个函数要返回多个返回值,返回值的参数类型可以相同也可以不同,传统的单返回值的编程方法给这样的需求造成了不便。即需要程序员完成大量复杂、重复或类似的编程开发工作,这一方面带来大量的人工成本的浪费,另一方面程序的代码量激增,虽然最终能实现软件的技术目的,但在运行中则可能带来控制对象或程序运行速度过慢等问题,而且因为需要大量的编程工作,所以软件开发的效率也无法提高。
经过检索发现:
1、申请号为200810235435.9的中国发明专利申请《一种通过函数编程模型支持大规模分布式并行计算的方法》,公开了一种通过函数编程模型支持大规模分布式并行计算的方法,首先将基于过程的实现代码转换成函数式,然后消除函数的边际效应,再构造fork和forkout函数,进行模拟执行过程,当遇到函数调用时,将函数调用转换为将函数和其参数作为参数,传入伪调用函数。利用VOID的感染特性来对函数调用进行染色获取函数的调用关系。当到达程序的终点则产生一系列的函数执行序列,根据执行序列以及参数进行一次分布式计算,将结果缓冲起来,并对代码进行第二次执行,在此过程,遇到函数调用,直接返回已经缓冲的数据。本发明通过建立基于通用语言的并自动化归纳问题分割的模型,实现函数的分布调度执行算法,适合应用于大规模分布式***。但是,该发明侧重编程方法支持分布式并行计算,代码量大、编程效率低。
2、申请号为200710172322.4的中国发明专利申请《构件化软件***实现脚本语言调用多输出参数接口的方法》,包括***产生脚本语言对组件对象接口方法的调用语句、脚本引擎读取调用信息、脚本引擎根据接口方法的元信息将调用信息传递给接口方法、脚本引擎判断接口方法中是否含有输出参数、如果有则进行输出参数变量动态生成并传入该接口方法的操作处理、脚本引擎调用该接口方法、脚本引擎将输出参数变量转换为与脚本数据类型相适配的输出信息并返回给***。采用该种构件化软件***中实现脚本语言调用多输出参数接口的方法,有效解决了脚本语言调用构件接口方法时输出参数返回值的适配问题,实现过程简单,代码执行效率较高,使用方便快捷,同时工作性能稳定可靠,适用范围较为广泛。但是,该发明是通过在构建化软件***中实现脚本语言的多参数接口,代码量大、编程效率低。
3、Python函数的多返回值,在Python函数编程中,可以返回多参数,参数的类型可以不同,使用较为灵活。其本质是返回的一个元组值,元组在语法上可以省略两边的圆括号,因此看起来像是多个参数返回值。但是该函数方法代码量大,且无法有效处理对多个函数的定义,开发难度大。
因此,采用传统的编程方法已经不能满足工业应用的需求。如何提高编程的效率、提高代码的使用灵活性,降低代码量和开发中人工成本,成为本领域亟待解决的问题。
发明内容
针对现有技术中存在的上述不足,本发明的目的是提供一种多返回值的函数编程方法,该方法提供了一种多返回值的机制,提高了编程的效率;多返回值的数据类型可以不同,提高了代码的使用灵活性,降低了代码量和开发中人工成本,能够更好地满足现有工业应用中对于软件开发的需求。
本发明是通过以下技术方案实现的:
一种多返回值的函数编程方法,能够通过一个动作函数返回多个返回值,包括:
定义多个变量,并获取每一个变量的ID号;
选择一个能够返回多个值的动作函数,并***用于承载返回值的变量;
修改动作函数的返回值的变量名为已经定义的用于承载返回值的变量ID号,同时修改动作函数输入参数的变量名为已经定义的其他变量ID号;
保存代码,执行动作函数,通过一个动作函数实现返回多个返回值。
优选地,所述定义变量,包括:
布置层Layer;
选取多个组件作为变量,并拖拽到层Layer中;
获取每一个组件的ID号,即每一个变量的ID号。
优选地,所述组件包括:基础组件、通用组件和高级组件。
优选地,多个组件相同或者不同。
优选地,多个变量的类型相同或者不同。
优选地,所述选择一个能够返回多个值的动作函数,并***用于承载返回值的变量,包括:
选取动作函数时,首选确认是否需要操作外部组件:如果需要,则接入外部组件支持;如果不需要,则直接在选取的动作函数中***用于承载返回值的变量。
优选地,在接入外部组件支持的情况下,将外部组件的参数写入所选取的动作函数中。
优选地,对外部组件操作后,还包括操作后的反馈,包括:反馈的数据和标志位,其中标志位用于表示外部组件操作是否成功,如果成功,则取出反馈的数据。
优选地,所述外部组件包括:DLL(动态链接库)和/或数据库。
优选地,所述执行动作函数,包括如下任意一个或任意多个步骤:
-在开发环境中执行代码;
-在Runtime模式下执行代码。
优选地,所述变量的ID号为变量建立时默认的ID号或通过赋值得到的ID号。
与现有技术相比,本发明具有如下的有益效果:
由于采用了上述技术方案,本发明的有益效果是:
1、本发明通过一种编程方法,具有获取到多返回值的特点;
2、本发明通过λ编程语言实现多参数返回值的输出,即给定操作对象和操作参数以及函数关键字,能返回多个同类型或者不同类型的返回值,可以适用于多种工业应用场合的编程控制;
3、在本发明中,对于需要多返回值的场景可以通过一个函数实现,不再需要分别定义不同的功能函数实现,降低了代码量,进而降低了开发中人工成本;
4、本发明降低了软件的开发难度,提高了代码的复用率,大大提高了软件开发的效率,并能在具体应用中提高控制对象的运行速度、降低运行处理复杂度。
以上有益效果表明,本发明能够更好地满足现有工业应用中对于软件开发的需求。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明一实施例中多返回值的函数编程方法流程图。
具体实施方式
下面对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
参照图1所示,一种多返回值的函数编程方法的实施例流程图,能够通过一个函数返回多个返回值,包括如下步骤:
步骤S1,定义多个变量,并获取每一个变量的ID号;
步骤S2,选择一个能够返回多个值的动作函数,并***用于承载返回值的变量;
步骤S3,修改动作函数的返回值的变量名为已经定义的用于承载返回值的变量ID号,同时修改动作函数输入参数的变量名为已经定义的其他变量ID号;
步骤S4,保存代码,执行动作函数,通过一个动作函数实现返回多个返回值。
进一步地,所述步骤S1,包括如下步骤:
步骤S1-1,布置层Layer;
步骤S1-2,选取多个组件作为变量,并拖拽到层Layer中;
步骤S1-3,获取每一个组件的ID号,即每一个变量的ID号。
进一步地,所述组件包括:基础组件、通用组件和高级组件;其中:
所述基本组件包括如下任意一个或任意多个组件:
-Layer层组件,用于构建Layer层;
-Label组件,用于构建标签;
-TextBox组件,用于构建文本框;
-Image组件,用于构建Image图像;
-Gif组件,用于构建Gif动图;
-Apng组件,用于构建Apng图像;
-CommandButton组件,用于构建按钮;
-Var组件,用于构建代码中的变量;
所述通用组件包括如下任意一个或任意多个组件:
-Menu组件,用于构建菜单栏;
-ComboBox组件,用于构建下拉框;
-ListBox组件,用于构建列表框;
-CheckBox组件,用于构建复选框;
-OptionButton组件,用于构建单点选择框;
-DateBox组件,用于构建日期选择组件;
-TimeBox组件,用于构建时间组件;
-ProgreBar组件,用于构建进度条;
-Timer组件,用于构建触发时钟;
所述高级组件包括如下任意一个或任意多个组件:
-Chart组件,用于构建图表框;
-Flash组件,用于构建Flash;
-Report组件,用于构建报表组件;
-Tree组件,用于构建树组件;
-WebBrowser组件,用于构建浏览器组件。。
进一步地,所述多个组件相同或者不同。
进一步地,所述多个变量的类型相同或者不同。
进一步地,所述步骤S2,包括如下步骤:
选取动作函数时,首选确认是否需要操作外部组件:如果需要,则接入外部组件支持;如果不需要,则直接在选取的动作函数中***用于承载返回值的变量。
在所选取的动作函数需要填写外部组件的参数情况下,则需要外部组件支持;在所选取的动作函数不需要填写外部组件的参数情况下,则不需要外部组件支持。
进一步地,在接入外部组件支持的情况下,将外部组件的参数写入所选取的动作函数中。
进一步地,对外部组件操作后,还包括操作后的反馈,包括:反馈的数据和标志位,其中标志位用于表示外部组件操作是否成功,如果成功,则取出反馈的数据。
进一步地,所述外部组件包括:DLL(动态链接库)和/或数据库。
进一步地,所述步骤S4中执行动作函数,包括如下任意一个或任意多个步骤:
-在开发环境中执行代码;
-在Runtime模式下执行代码。
进一步地,所述变量的ID号为变量建立时默认的ID号或通过赋值得到的ID号。
本实施例提供的一种多返回值的函数编程方法,在软件编程中可以通过一个动作函数返回多个返回值。
为了更具体的了解本发明,以下通过具体应用实例进行说明,但该应用实例并不用来限定本发明。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在以下应用实例中,多返回值的函数编程方法的实施采用计算机***进行,计算机***包括计算机,计算机包括经由***总线连接的处理单元、***存储器、固定存储器接口、移动存储器接口、用户输入接口、网络接口、视频接口和输出***接口等;
其中,在处理单元的支持下,通过用户输入接口实现本实施例多返回值的函数编程方法的各步骤的实施;步骤S1中,拖动组件需要通过键盘或者触摸屏完成,编辑组件的属性需要通过键盘完成;步骤S2中选取动作函数需要通过鼠标或者触摸屏点击,或者通过键盘输入;步骤S3中形成的事件程序代码还能够通过固定存储器接口、移动存储器接口、网络接口、视频接口和输出***接口等保存至其他存储器或运行环境中。步骤S4中需要通过鼠标或者触摸屏点击保存代码至存储硬盘;执行动作函数需要通过鼠标点击运行解释器,解释运行存储在硬盘上的代码,通过计算机显示器显示运行的软件。
需要说明的是,上述硬件配置说明仅仅是说明性的,并且决不意味着对本实施例应用或使用的任何限制。
应用实例说明:
实例举例1:调用硬件的DLL函数
需要和硬件交互的例子中,可以调用DLL函数。打开软件***(例如UCC开发软件),布置好层Layer以后,拖动一个Button组件到层Layer容器中,双击Button组件的ID号,编写点击事件,在点击事件中,***函数模块中的DLL函数,输入硬件通讯规定的参数后,给定三个返回值作为返回参数。点击Act ion并保存程序,点击Button组件即能得到三个返回值,分别表示成功值、硬件的返回参数1和硬件的返回参数2。
部分程序示例
DLL:txtSuccess.Text,txtReturn1.Text,txtReturn2.Text='ICEDTCPIP.dll','Test','@txtParam1.Text','@txtParam2.Text'。
本实施例通过一个动作函数返回多个返回值。
本发明上述实施例的多返回值的函数编程方法,具有获取到多返回值的特点,给定操作对象和操作参数以及函数关键字,返回多个同类型或者不同类型的返回值;对于需要多返回值的场景可以通过一个函数实现,不再需要分别定义不同的功能函数实现,降低了代码量;降低了软件的开发难度,提高了代码的复用率,可以适用于多种工业应用场合的编程控制。
附图中的流程图显示了根据本发明的较优实施例的方法功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,流程图中的每个方框、以及方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。
Claims (10)
1.一种多返回值的函数编程方法,其特征在于包括:
定义多个变量,并获取每一个变量的ID号;
选择一个能够返回多个值的动作函数,并***用于承载返回值的变量;
修改动作函数的返回值的变量名为已经定义的用于承载返回值的变量ID号,同时修改动作函数输入参数的变量名为已经定义的其他变量ID号;
保存代码,执行动作函数,通过一个动作函数实现返回多个返回值。
2.根据权利要求1所述的多返回值的函数编程方法,其特征在于,所述定义变量,包括:
布置层Layer;
选取多个组件作为变量,并拖拽到层Layer中;
获取每一个组件的ID号,即每一个变量的ID号。
3.根据权利要求2所述的多返回值的函数编程方法,其特征在于,所述组件包括:基础组件、通用组件和高级组件;其中:
所述基本组件包括如下任意一个或任意多个组件:
-Layer层组件,用于构建Layer层;
-Label组件,用于构建标签;
-TextBox组件,用于构建文本框;
-Image组件,用于构建Image图像;
-Gif组件,用于构建Gif动图;
-Apng组件,用于构建Apng图像;
-CommandButton组件,用于构建按钮;
-Var组件,用于构建代码中的变量;
所述通用组件包括如下任意一个或任意多个组件:
-Menu组件,用于构建菜单栏;
-ComboBox组件,用于构建下拉框;
-ListBox组件,用于构建列表框;
-CheckBox组件,用于构建复选框;
-OptionButton组件,用于构建单点选择框;
-DateBox组件,用于构建日期选择组件;
-TimeBox组件,用于构建时间组件;
-ProgreBar组件,用于构建进度条;
-Timer组件,用于构建触发时钟;
所述高级组件包括如下任意一个或任意多个组件:
-Chart组件,用于构建图表框;
-Flash组件,用于构建Flash;
-Report组件,用于构建报表组件;
-Tree组件,用于构建树组件;
-WebBrowser组件,用于构建浏览器组件。
4.根据权利要求2所述的多返回值的函数编程方法,其特征在于,所述多个组件相同或者不同。
5.根据权利要求1所述的多返回值的函数编程方法,其特征在于,所述多个变量的类型相同或者不同。
6.根据权利要求1所述的多返回值的函数编程方法,其特征在于,所述选择一个能够返回多个值的动作函数,并***用于承载返回值的变量,包括:
选取动作函数时,首选确认是否需要操作外部组件:如果需要,则接入外部组件支持;如果不需要,则直接在选取的动作函数中***用于承载返回值的变量。
7.根据权利要求6所述的多返回值的函数编程方法,其特征在于,还包括如下任意一项或任意多项特征:
-在接入外部组件支持的情况下,将外部组件的参数写入所选取的动作函数中;
-对外部组件操作后,还包括操作后的反馈,包括:反馈的数据和标志位,其中标志位用于表示外部组件操作是否成功,如果成功,则取出反馈的数据。
8.根据权利要求1所述的多返回值的函数编程方法,其特征在于,所述外部组件包括:动态链接库和/或数据库。
9.根据权利要求1所述的多返回值的函数编程方法,其特征在于,所述执行动作函数,包括如下任意一个或任意多个步骤:
-在开发环境中执行代码;
-在Runtime模式下执行代码。
10.根据权利要求1至9中任一项所述的面向方向的编程方法,其特征在于,所述变量的ID号为变量建立时默认的ID号或通过赋值得到的ID号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810655418.4A CN109117124A (zh) | 2018-06-23 | 2018-06-23 | 一种多返回值的函数编程方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810655418.4A CN109117124A (zh) | 2018-06-23 | 2018-06-23 | 一种多返回值的函数编程方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109117124A true CN109117124A (zh) | 2019-01-01 |
Family
ID=64822980
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810655418.4A Withdrawn CN109117124A (zh) | 2018-06-23 | 2018-06-23 | 一种多返回值的函数编程方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109117124A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111610966A (zh) * | 2019-02-22 | 2020-09-01 | 龙芯中科技术有限公司 | 程序的运行方法、装置和计算设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103809938A (zh) * | 2012-11-05 | 2014-05-21 | 腾讯科技(深圳)有限公司 | Python函数运行信息的自动记录方法及*** |
CN105447101A (zh) * | 2015-11-12 | 2016-03-30 | 北京锐安科技有限公司 | 一种地图引擎实现方法及装置 |
US20160259629A1 (en) * | 2006-01-10 | 2016-09-08 | International Business Machines Corporation | System and method for serving multiple data objects and formatting functions in a single request |
CN108139723A (zh) * | 2015-11-19 | 2018-06-08 | 帝斯贝思数字信号处理和控制工程有限公司 | 用于运行控制器的方法以及设置用于外部旁路的控制器 |
-
2018
- 2018-06-23 CN CN201810655418.4A patent/CN109117124A/zh not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160259629A1 (en) * | 2006-01-10 | 2016-09-08 | International Business Machines Corporation | System and method for serving multiple data objects and formatting functions in a single request |
CN103809938A (zh) * | 2012-11-05 | 2014-05-21 | 腾讯科技(深圳)有限公司 | Python函数运行信息的自动记录方法及*** |
CN105447101A (zh) * | 2015-11-12 | 2016-03-30 | 北京锐安科技有限公司 | 一种地图引擎实现方法及装置 |
CN108139723A (zh) * | 2015-11-19 | 2018-06-08 | 帝斯贝思数字信号处理和控制工程有限公司 | 用于运行控制器的方法以及设置用于外部旁路的控制器 |
Non-Patent Citations (2)
Title |
---|
CSDN论坛: "dll中函数有多个返回值", 《HTTPS://BBS.CSDN.NET/TOPICS/290020460》 * |
CSDN论坛: "dll中的函数的返回多个参数的问题", 《HTTPS://BBS.CSDN.NET/TOPICS/110133032》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111610966A (zh) * | 2019-02-22 | 2020-09-01 | 龙芯中科技术有限公司 | 程序的运行方法、装置和计算设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10983660B2 (en) | Software robots for programmatically controlling computer programs to perform tasks | |
JP4669788B2 (ja) | 制約条件解決方法、制約条件解決装置、及び制約条件解決システム | |
Pidd et al. | Simulation software: not the same yesterday, today or forever | |
Ozik et al. | The ReLogo agent-based modeling language | |
US10387126B2 (en) | Data marshalling optimization via intermediate representation of workflows | |
CN111159301A (zh) | 一种基于智能合约的数据创建方法、装置、设备及存储介质 | |
CN109117124A (zh) | 一种多返回值的函数编程方法 | |
CN117215556A (zh) | 模块化的页面快速构建方法、***、设备及介质 | |
CN109062556A (zh) | 一种多返回值的函数编程*** | |
WO2023175473A1 (en) | Interactive tool for efficiently developing task flows | |
Palumbo | The Flutter framework: Analysis in a mobile enterprise environment | |
CN109117128A (zh) | 一种实现相同目标的编程*** | |
CN104750482A (zh) | 一种构建基于MapReduce的动态脚本执行引擎的方法 | |
Xie | Design and Implementation of an Integrated Platform for Multi-language Methods Based on Javaweb | |
CN109062954A (zh) | 一种高效的数据交换和数据源隔离*** | |
CN112988139A (zh) | 事件处理文件的开发方法与装置 | |
CN117648081B (zh) | 一种可视化软件集成开发方法、***及存储介质 | |
Lukatskii et al. | Computer System of Organization of Multilinear Optimization Calculations on Models of Balance Type | |
Yevsieiev | Conceptual scheme and basic concepts graphic representation of software and modules visual elements description in CIS TPP design automation problem solution | |
Bruno et al. | Rapid prototyping of control systems using high level Petri nets | |
Soeda et al. | Embedded control software design with aspect patterns | |
CN109032575A (zh) | 一种多返回值的函数编程处理器 | |
Sastry | User interface management systems for engineering applications | |
CN109062564A (zh) | 一种同时面向硬件和数据的编程处理器 | |
CN109062557A (zh) | 一种实现相同目标的编程方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20190101 |
|
WW01 | Invention patent application withdrawn after publication |