1. Извини, - бред. Я понимаю, тут паранойя в моде, и является ломовым аргументом за "почему так не надо делать". Никакой опасности не вижу в упор. Смотрел внимательно, если чё. Любое имя, в конечном счёте есть ссылка. Индексация есть обычное расширение понятия имени. Не более. Давай запретим присваивание вообще. В целях безопасности. Ссылки же крайне опасны так?
2. Духу объектно-ориентированного программирования, при такой логике, яростно противоречат С++, С#, Делфи, пара дюжин менее популярных языков, в которых индексаторы совершенно нормально работают и справа и слева. Причём здравому смыслу и моему духу это почему-то не противоречит.
Индексаторы делаются для связи с внешней средой. Их функция именно интерфейсная. Я могу инкапсулировать и прятать что угодно, но индексы мне нужны для оперирования объектами как массивами. Фактически все массивы как-то устроены. Например обычные динамические массивы mql. Может запретим их слева от оператора присваивания ставить? Заменим функцией какой-нибудь типа SetArrayValue(array, i, j, value); Заодно и в читабельности выиграем. Да и отладка станет куда проще. Мля. Уф..
3. А как насчёт того, чтоб сделать нормальный индексатор? Горничная это конечно классно, но королева всё-таки лучше.
4. Вот в этом месте у меня крыша конкретно начала ехать. Это что, нечитабельно??
Вот это читабельнее, да?
t.setDataElement(i, i*i);
Круто. Пожалуй пойду лечиться.
5. Ваще круто.
6. Я плакаль.
e(array, i, j, value); 这也会提高可读性。调试也将变得更加容易。 该死。呃...
宏和内联函数确实是不同的东西。但这不是我的意思。这里有一个例子,参数的值在编译时是未知的
在第一种情况下,代码必须粘贴到当前函数中(我想),在第二种情况下,函数被调用,参数 通过堆栈传递(我想)。但出于优化的目的,编译器实际上也可以通过替换来实现第二个变体。是这样吗? 我不知道。这就是为什么我问。
椭圆对象只有在你点击锚点 时才会用鼠标突出显示。
这是一个错误还是一个特点?它的实施是非常不方便的。
Это что, юмор такой чёрный?
1. Извини, - бред. Я понимаю, тут паранойя в моде, и является ломовым аргументом за "почему так не надо делать". Никакой опасности не вижу в упор. Смотрел внимательно, если чё. Любое имя, в конечном счёте есть ссылка. Индексация есть обычное расширение понятия имени. Не более. Давай запретим присваивание вообще. В целях безопасности. Ссылки же крайне опасны так?
2. Духу объектно-ориентированного программирования, при такой логике, яростно противоречат С++, С#, Делфи, пара дюжин менее популярных языков, в которых индексаторы совершенно нормально работают и справа и слева. Причём здравому смыслу и моему духу это почему-то не противоречит.
Индексаторы делаются для связи с внешней средой. Их функция именно интерфейсная. Я могу инкапсулировать и прятать что угодно, но индексы мне нужны для оперирования объектами как массивами. Фактически все массивы как-то устроены. Например обычные динамические массивы mql. Может запретим их слева от оператора присваивания ставить? Заменим функцией какой-нибудь типа SetArrayValue(array, i, j, value); Заодно и в читабельности выиграем. Да и отладка станет куда проще. Мля. Уф..
3. А как насчёт того, чтоб сделать нормальный индексатор? Горничная это конечно классно, но королева всё-таки лучше.
4. Вот в этом месте у меня крыша конкретно начала ехать. Это что, нечитабельно??
Вот это читабельнее, да?
t.setDataElement(i, i*i);
Круто. Пожалуй пойду лечиться.
5. Ваще круто.
6. Я плакаль.
e(array, i, j, value); 这也会提高可读性。调试也将变得更加容易。 该死。呃...
那么,设定者有一个优势,就是你可以做一些比简单的方程式更多的事情。
例如,你可以记录信息,转换数据(如果我们谈论的是字符串或更复杂的数据),在发生重要事情时向其他对象发送消息(如更新数据)。
你的对象如何知道日期已经改变?显然,你要存储报价...
哦,是的,这是一个错误的问题,因为你的对象更像是一个结构,并没有真正管理任何东西。
一切都在另一个垃圾类中完成,它处理一切,甚至更糟,一切都发生在onStart(), onTick(), ...!:)
祝你有个愉快的一天
3.做一个普通的索引器怎么样?"女仆 "很好,但 "女王 "更好。
垫片。然而,与正常的lvalue相比,它在时间上将会更昂贵。但它将看起来正是你需要的方式。
______
啊,地狱没有。那么你就需要一个类型Ghost 运算符重载。遗憾的是。
那么,setter的优势在于你可以做一些比简单的方程式更多的事情。
例如,你可以记录信息,转换数据(如果我们谈论的是字符串或更复杂的数据),在发生重要事情时向其他对象发送消息(如更新数据)。
你的对象如何知道日期已经改变?显然,你要存储报价...
哦,是的,这是一个错误的问题,因为你的对象更像是结构,并没有真正控制什么。
一切都在另一个垃圾类中完成,它处理一切,甚至更糟,一切都发生在onStart(), onTick(), ...!:)
祝你有个愉快的一天
关键是索引器在功能上与设置器 相同 。 它被实现为一个函数,其内容可以是任何东西(最简单的典型情况是数组的边界检查和处理其他错误),而且它不只是返回一个数组项 的引用。
你也有一个美好的一天。
(抱歉昨天的语气,我有点紧张--工作上的麻烦。你与此毫无关系。好吧,除非你太绝对化了 :)
垫片。然而,与正常的lvalue相比,它在时间上将会更昂贵。但它会以你需要的方式出现。
______
啊,地狱没有。那么你需要重载类型转换 操作符。太糟糕了。
事实上,我认为他们会这样做的。 在语言中,有一个明显的缺陷,即参考回报。
你不需要做引用变量,但从函数中返回的l值是神圣的...:)
我不认为这在原则上不能解决--语言有通常的mql-arrays,它们在赋值运算符的两边都感觉很好。但它们在实现上是C++类!
下面是同一系列的另一个例子。 这段代码可以编译,但不能工作。
我的观点不是说它们不应该编译 - 我的观点是它们应该工作。:)
...
我不是说它不应该编译,我是说它应该工作......:)
MQL5有一个奇妙的常数IS_DEBUG_MODE,属于其他常数组。我们可以为测试员添加这样的常量吗?类似于IS_TESTER_MODE...
MQL5有一个奇妙的常数IS_DEBUG_MODE,属于其他常数组。我们可以为测试员添加这样的常量吗?类似于IS_TESTER_MODE...
这些常数不就可以了吗?
enum_mql5_info_integer
识别器
描述
财产类型
mql5_program_type
mql5-程序的类型
enum_program_type
mql5_dlls_allowed
允许在 当前运行的程序中使用DLL。
bool
mql5_trade_allowed
允许为 该运行项目进行交易
bool
MQL5_DEBUGGING
一个运行中的程序在调试模式下工作的标志
bool
MQL5_TESTING
在测试器中运行一个程序的标志
bool
mql5_optimization
优化期间运行程序的标志
bool
mql5_visual_mode
在视觉测试模式下运行程序的标志
bool