文章 "交易者生活窍门: 利用 defines (#define) 融合 ForEach" - 页 3 1234567 新评论 TheXpert 2018.02.14 16:22 #21 fxsaber:这是有缺陷的(对结构来说是无奈之举),也不是最佳方案。如果我们这样做有缺陷,那么在我看来就是反其道而行之。它也有缺陷,也不是最佳方案,但我觉得它更方便。 #define ForEach(type, element, array) \ for (int __i = 0, __max = ArraySize((array)); __i < __max; __i++) \ { \ type element = array[__i]; \ void OnStart() { string array[] = {"12", "23", "34", "45"}; ForEach(string, item, array) Print(item); } } fxsaber 2018.02.14 17:30 #22 Комбинатор:如果你要带着缺陷去做,我觉得应该反过来。同样有缺陷,同样不理想,但我觉得这样更舒服。是的,这种类型似乎没有出路。摆脱前一个结构的方法是这样的。 template <typename T> bool Assign( const T &Value1, T &Value2 ) { Value2 = Value1; return(true); } #define forEach(element, array) for (int __i = 0, __max = ArraySize((array)); __i < __max && Assign(array[__i], element); __i++) 简而言之,就是不完整。尤其是 forEach 只用于读取数组,而不是写入数组。 Roman Shiredchenko 2018.02.14 18:16 #23 tUT 看起来像是为了工作而工作....。:-) 金句: "我自己认为文章中给出的技巧是一种生活窍门,并且仍然是经典 MQL5 方法的追随者。也许这些文章能帮助那些习惯于用 MQL4 风格写作的人克服转用MetaTrader 5 平台 时的心理障碍,因为MetaTrader 5 在各方面都更加方便。 fxsaber 2018.02.14 18:40 #24 Roman Shiredchenko:tUT 看起来像是为了工作而工作....。:-)金玉良言:"我自己认为文章中给出的技巧是一种生活窍门,并且仍然是经典 MQL5 方法的追随者。也许这些文章能帮助那些习惯于使用 MQL4 风格写作的人克服在切换到MetaTrader 5 平台 时的心理障碍,因为MetaTrader 5 在所有参数上都要方便得多"。我相信这很正常,因为有人愿意多写三倍的代码来达到同样的效果。 fxsaber 2018.02.14 19:27 #25 要完成 forEach,需要在宏中使用 ###,这样才能使用嵌套 forEach。 [删除] 2018.02.15 03:15 #26 Комбинатор:如果你要带着缺陷去做,我觉得应该反过来。同样有缺陷,同样不理想,但我觉得这样更舒服。你已经证明了宏的一个缺陷。 你可以把一个括号放在里面,但你必须记得把第二个括号放在外面。 千万别这么做! TheXpert 2018.02.15 08:24 #27 Koldun Zloy:你证明了宏的一个缺点。哦,对我来说,在当前情况下,它比宏化变量要好。 我直接告诉过你,没有好的版本,而且在当前的现实情况下也不可能有好的版本。 fxsaber 2018.02.15 08:40 #28 Комбинатор:在我看来,这比在当前情况下宏化变量要好得多。我直接告诉过你,没有好的版本,而且在当前情况下也不可能有好的版本。我觉得这个版本不错 #define ForEach(Index, array) for (int Index = 0, max##Index = ArraySize((array)); Index < max##Index; Index++) void OnStart() { string array[] = {"12", "23", "34", "45"}; ForEach(i, array) { Print(array[i]); ForEach(j, array) Print(array[j]); } } TheXpert 2018.02.15 09:06 #29 fxsaber:我认为这是一个很好的版本 没错 Rashid Umarov 2018.02.15 09:38 #30 fxsaber:我认为这是一个很好的版本嵌套的 ForEach 是为了显示没有碰撞。对吗? 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这是有缺陷的(对结构来说是无奈之举),也不是最佳方案。
如果我们这样做有缺陷,那么在我看来就是反其道而行之。它也有缺陷,也不是最佳方案,但我觉得它更方便。
如果你要带着缺陷去做,我觉得应该反过来。同样有缺陷,同样不理想,但我觉得这样更舒服。
是的,这种类型似乎没有出路。摆脱前一个结构的方法是这样的。
简而言之,就是不完整。尤其是 forEach 只用于读取数组,而不是写入数组。
tUT 看起来像是为了工作而工作....。:-)
金句:
"我自己认为文章中给出的技巧是一种生活窍门,并且仍然是经典 MQL5 方法的追随者。也许这些文章能帮助那些习惯于用 MQL4 风格写作的人克服转用MetaTrader 5 平台 时的心理障碍,因为MetaTrader 5 在各方面都更加方便。
tUT 看起来像是为了工作而工作....。:-)
金玉良言:
"我自己认为文章中给出的技巧是一种生活窍门,并且仍然是经典 MQL5 方法的追随者。也许这些文章能帮助那些习惯于使用 MQL4 风格写作的人克服在切换到MetaTrader 5 平台 时的心理障碍,因为MetaTrader 5 在所有参数上都要方便得多"。
我相信这很正常,因为有人愿意多写三倍的代码来达到同样的效果。
如果你要带着缺陷去做,我觉得应该反过来。同样有缺陷,同样不理想,但我觉得这样更舒服。
你已经证明了宏的一个缺陷。
你可以把一个括号放在里面,但你必须记得把第二个括号放在外面。
千万别这么做!
你证明了宏的一个缺点。
哦,对我来说,在当前情况下,它比宏化变量要好。
我直接告诉过你,没有好的版本,而且在当前的现实情况下也不可能有好的版本。
在我看来,这比在当前情况下宏化变量要好得多。
我直接告诉过你,没有好的版本,而且在当前情况下也不可能有好的版本。
我觉得这个版本不错
我认为这是一个很好的版本
我认为这是一个很好的版本
嵌套的 ForEach 是为了显示没有碰撞。对吗?