新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 406 1...399400401402403404405406407408409410411412413...1953 新评论 [删除] 2018.01.05 10:46 #4051 RomanRott:如何编写一个参数数量可变的函数?你可以将一个函数的一些参数设置为初始值(这些参数应该是最后一个)。当函数被调用时,这些参数可以被设置或不设置,这取决于需要。如果参数不会被明确设置,它们将收到初始值。第二个选择是超载。只需写一个同名的函数,只是参数的类型/数量不同。 Roman Sharanov 2018.01.05 10:56 #4052 Artyom Trishkin:像什么?我需要向一个函数传递几个参数,但在不同的情况下,我需要传递不同的数量,事先知道的是 然后在函数中处理这些参数 例如,在C语言中,它是这样实现的 int func(int a, int b, ...) [删除] 2018.01.05 11:42 #4053 有没有办法在MetaEditor的工具栏上加一个 "撤销 "按钮?(实现Ctrl+Z的那个)。 Konstantin Erin 2018.01.05 11:59 #4054 RomanRott: 我需要向一个函数传递几个参数,但在不同的情况下,我需要传递不同的数量,事先知道的是 然后在函数中处理这些参数 例如,在C语言中,它是这样实现的 int func(int a, int b, ...)传递数组和要从数组中获取的参数数量 Roman Sharanov 2018.01.05 12:10 #4055 STARIJ:传入一个数组和从数组中获取的参数数量 所以我需要传递的数字是不按顺序的,即不能生成一个通用的数字 Artyom Trishkin 2018.01.05 12:16 #4056 RomanRott: 所以我需要传递的数字是不按顺序的,也就是说不能生成一个通用的数字。 至少给我一个不是抽象的例子。 Roman Sharanov 2018.01.06 01:07 #4057 Artyom Trishkin: 至少给我一个非抽象的例子。比如说。 根据条件(不是如果,只是基本上,我自己写的这些数字)a = func(digit, 10, 18, 42); 或a = func(digit, 11, 18, 42, 15, 13); 或a = func(digit, 5)。double func(int num, ????){ 返回("这些参数的总和"/num)。} Artyom Trishkin 2018.01.06 02:30 #4058 RomanRott: 像这样: 根据条件(不是如果,只是基本上,我自己写的这些数字。)a = func(digit, 10, 18, 42); 或a = func(digit, 11, 18, 42, 15, 13); 或a = func(digit, 5)。double func(int num, ????){ 返回("这些参数的总和"/num)。}那么,我首先想到的是,正如上面已经建议的那样--在函数中传递双倍数,在函数中从传递的数组值中计算出必要的值--这样就有可能知道数字的数量(数组大小),并相应地计算出它们的关系。只有公式在任何大小的数组中都会保持不变。如果你也要改变公式,那么仅仅是数组是不行的,你必须多做一个参数--它将指向正确的计算公式。例如,你可以传递一个表示公式类型的枚举(ENUM_TYPE_CALCULATED),根据这个枚举的值,例如CALCULATE_SUMM,只是计算(在这个例子中)传递的数组中所有值的总和。 Alexey Viktorov 2018.01.06 07:05 #4059 RomanRott: 所以我需要传到那里的数字是没有顺序的,也就是说,不能形成一个普遍的数字这里有一个完整的答案,但没有回应...... 关于交易、自动交易系统和策略测试的论坛 新手对MQL4的任何问题,对算法和代码的帮助和讨论 Alexey Kozitsyn, 2018.01.05 11:46 你可以将一些函数参数设置为初始值(这些参数应该是最后一个)。当你调用该函数时,你将能够根据需要设置这些参数或不设置。如果参数没有明确设置--它们将获得初始值。第二个选择是超载。只需写一个同名的函数,只是参数的类型/数量不同。 Artyom Trishkin 2018.01.06 07:29 #4060 Alexey Viktorov:这里有一个完整的答案,但没有回应......如果事先不知道数字的集合和数量,就没有每个新集合的函数。 1...399400401402403404405406407408409410411412413...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
如何编写一个参数数量可变的函数?
你可以将一个函数的一些参数设置为初始值(这些参数应该是最后一个)。当函数被调用时,这些参数可以被设置或不设置,这取决于需要。如果参数不会被明确设置,它们将收到初始值。
第二个选择是超载。只需写一个同名的函数,只是参数的类型/数量不同。
像什么?
我需要向一个函数传递几个参数,但在不同的情况下,我需要传递不同的数量,事先知道的是
例如,在C语言中,它是这样实现的然后在函数中处理这些参数
int func(int a, int b, ...)
有没有办法在MetaEditor的工具栏上加一个 "撤销 "按钮?
(实现Ctrl+Z的那个)。
我需要向一个函数传递几个参数,但在不同的情况下,我需要传递不同的数量,事先知道的是
例如,在C语言中,它是这样实现的然后在函数中处理这些参数
int func(int a, int b, ...)
传递数组和要从数组中获取的参数数量
传入一个数组和从数组中获取的参数数量
所以我需要传递的数字是不按顺序的,也就是说不能生成一个通用的数字。
至少给我一个非抽象的例子。
比如说。
根据条件(不是如果,只是基本上,我自己写的这些数字)
a = func(digit, 10, 18, 42); 或a = func(digit, 11, 18, 42, 15, 13); 或a = func(digit, 5)。
double func(int num, ????)
{
返回("这些参数的总和"/num)。
}
像这样:
根据条件(不是如果,只是基本上,我自己写的这些数字。)
a = func(digit, 10, 18, 42); 或a = func(digit, 11, 18, 42, 15, 13); 或a = func(digit, 5)。
double func(int num, ????)
{
返回("这些参数的总和"/num)。
}
那么,我首先想到的是,正如上面已经建议的那样--在函数中传递双倍数,在函数中从传递的数组值中计算出必要的值--这样就有可能知道数字的数量(数组大小),并相应地计算出它们的关系。只有公式在任何大小的数组中都会保持不变。如果你也要改变公式,那么仅仅是数组是不行的,你必须多做一个参数--它将指向正确的计算公式。例如,你可以传递一个表示公式类型的枚举(ENUM_TYPE_CALCULATED),根据这个枚举的值,例如CALCULATE_SUMM,只是计算(在这个例子中)传递的数组中所有值的总和。
所以我需要传到那里的数字是没有顺序的,也就是说,不能形成一个普遍的数字
这里有一个完整的答案,但没有回应......
关于交易、自动交易系统和策略测试的论坛
新手对MQL4的任何问题,对算法和代码的帮助和讨论
Alexey Kozitsyn, 2018.01.05 11:46
你可以将一些函数参数设置为初始值(这些参数应该是最后一个)。当你调用该函数时,你将能够根据需要设置这些参数或不设置。如果参数没有明确设置--它们将获得初始值。
第二个选择是超载。只需写一个同名的函数,只是参数的类型/数量不同。
这里有一个完整的答案,但没有回应......
如果事先不知道数字的集合和数量,就没有每个新集合的函数。