#property strict/******************************************************************************/struct ОфигеннаяСтруктура { // Заводим структуру
private: // Просто так извне к следующим элементам нельзя обратитьсяint значение; // Поле данных для хранения в структуреpublic: // К следующим элементам можно просто так обратиться извне
ОфигеннаяСтруктура(int значение = 0): значение(значение) { } // Конструктор: инициализирует поле значением переданного параметра; если параметр не передан, используется значение по умолчанию, равное 0int выдатьЗначение() const { return значение; } // Метод: возвращает значение поля, может вызываться для структур, переменные для которых объявленных как константные
};
/******************************************************************************/
ОфигеннаяСтруктура Функа1(int значение) { // Функция, возвращающая структуру
ОфигеннаяСтруктура местная(значение); // Создание локальной переменной, в данном случае, судя по типу, это - структура// Если структура посложнее, чем в этом примере, то тут можно выполнить над ней какие-то дополнительные действияreturn местная; // Возвращаем структуру из функции
}
/******************************************************************************/string Функа2(int значение) { // Функция, возвращающая один из встроенных типовstring Таблица[] = {"Ноль", "Один", "Два"};
/* Никакого особого смысла тут нет, просто имитация деятельности */return Таблица[значение % 3]; // Возвращаем строку из функции (остаток от деления параметра на три словами)
}
/******************************************************************************/voidOnStart() {
Print("Начинаем безобразничать...");
ОфигеннаяСтруктура штукаРаз = Функа1(5); // Заводим переменную (структуру) с одновременной инициализациейstring строкаРаз = Функа2(5); // Заводим переменную (один из встроенных типов) также с инициализациейPrint("Значение штукиРаз = ", штукаРаз.выдатьЗначение()); // Для получения значения поля структуры вызывается специально под это написанный методPrint("Значение строкиРаз = ", строкаРаз);
ОфигеннаяСтруктура штукаДва; // Заводим переменную (структуру) без явной инициализации (конструктор получает в качестве значения параметра значение, указанное по умолчанию, и структура инициализируется им)string строкаДва; // Заводим переменную (один из встроенных типов) без инициализации (переменные типа string, объявленные таким образом, инициализируются пустой строкой)Print("Значение штукиДва первое = ", штукаДва.выдатьЗначение());
Print("Значение строкиРаз первое = '", строкаРаз, "'");
штукаДва = Функа1(7); // Присвоение переменной штукаДва типа структура значения типа структура, возвращённого функцией Функа1
строкаДва = Функа2(7); // Присвоение переменной строкаДва одного из встроенных типов (строка) значения того же типа, возвращённого функцией Функа2Print("Значение штукиДва второе = ", штукаДва.выдатьЗначение());
Print("Значение строкиРаз второе = '", строкаРаз, "'");
Print("Заканчиваем безобразничать...");
}
运行的结果如下。
21:16:29 Script 1 EURUSDm,H1: loaded successfully
21:16:29 1 EURUSDm,H1: initialized
21:16:29 1 EURUSDm,H1: Начинаем безобразничать...
21:16:29 1 EURUSDm,H1: Значение штукиРаз = 5
21:16:29 1 EURUSDm,H1: Значение строкиРаз = Два
21:16:29 1 EURUSDm,H1: Значение штукиДва первое = 0
21:16:29 1 EURUSDm,H1: Значение строкиРаз первое = ''
21:16:29 1 EURUSDm,H1: Значение штукиДва второе = 7
21:16:29 1 EURUSDm,H1: Значение строкиРаз второе = 'Один'
21:16:29 1 EURUSDm,H1: Заканчиваем безобразничать...
21:16:29 1 EURUSDm,H1: uninit reason 0
21:16:29 Script 1 EURUSDm,H1: removed
谁有一个例子的代码,其中字符串数组的元素 是按字母顺序分组的?
提前感谢。
这里
https://docs.mql4.com/ru/basis/operators/return
它说。
"你可以返回简单的类型,简单的结构,以及指向对象的指针 。返回操作符 不能返回任何数组、类对象或复杂结构类型的变量。
"这看起来是所需要的吗?
使用的是俄罗斯标识符,所以看起来有点不寻常。
运行的结果如下。
thingRaz对象被初始化为从Funk函数返回的对象(结构),而thingTwo对象被初始化为默认值,但随后一个对象(结构)被分配给它,也从Funk函数返回。这看起来是正确的事情吗?
使用了俄罗斯的标识符,所以看起来有点不寻常。
运行的结果如下。
thingRaz对象被初始化为从Funk函数返回的对象(结构),而thingTwo对象被初始化为默认值,但随后一个同样从Funk函数返回的对象(结构)被分配给它。请你详细评论一下那个傻瓜 描述的方式,每一行包括语法?我还不明白这意味着什么。不一定在手指上,你也可以使用术语,但要逐行使用。
1)那么,Funk的函数是否像其他平庸的函数那样,返回一个对象而不是一些平庸的值?这是什么样的野兽,为什么它是一个物体?
2)我们能否用函数返回的对象或默认值进行初始化?也就是说,Funk函数虽然是同一结构的一部分,但与对象Thing 2没有任何关系,还是我理解错了?顺便说一下,它被称为对象,那么结构也有一个对象?我以为比这更简单。还有一个问题,如果一个结构的类型相同,我究竟如何将它们复制到另一个结构?这句简单的话。
并有一个臭名昭著的抄袭?而且没有必要单独声明Stuka 2的结构,它根本就不是一个结构,而是一个由结构创建的对象?
我对任何编程语言都不熟悉(但不反对学习),此外,对OOP的概念也比较模糊,所以如果问题很愚蠢,请不要惊讶。
哎呀,我刚才看到,大括号之前是封闭的,也就是说,这个Funka是在结构之外描述的,但它与结构的关系到底是什么呢?
请你详细评论一下那个傻瓜 描述的方式,每一行包括语法?我还不明白这意味着什么。不一定在手指上,你也可以使用术语,但要逐行使用。
1)那么,Funk的函数是否像其他平庸的函数那样,返回一个对象而不是一些平庸的值?这是什么样的野兽,为什么它是一个物体?
2)我们能否用函数返回的对象或默认值进行初始化?也就是说,Funk函数虽然是同一结构的一部分,但与对象Thing 2没有任何关系,还是我理解错了?顺便说一下,它被称为对象,那么结构也有一个对象?我以为比这更简单。还有一个问题,如果一个结构是同一类型的,到底如何才能复制到另一个结构中去?这句简单的话。
还有就是臭名昭著的抄袭?而且你不必单独声明2型结构,它根本不是一个结构,而是一个由结构创建的对象?
我对任何编程语言都不熟悉(但不反对学习),而且对OOP的概念相当模糊,所以如果问题很愚蠢,请不要惊讶。
哎呀,我刚才看到前面的大括号是封闭的,也就是说,这个函数是在结构之外描述的,但它与结构的关系到底是什么呢?
运行的结果如下。
函数返回声明中指定类型的对象。这里的对象不仅是指结构,也包括内置类型。
如果Funk1函数的返回值的类型是OffigenStructure类型,也就是结构,那就意味着这个函数返回的是结构的值,而且只是OffigenStructure类型。它之所以这样做,是因为而且仅仅是因为它的声明/定义有这种返回类型。
你可以用这样的值来初始化它,就像其中一个构造函数一样。没有构造函数也可以工作,但有不同的初始化语法和限制。
在这种情况下,构造函数需要一个int类型的值,所以OxygenStructure类型的变量应该用int类型的值来初始化,或者用另一种类型,但隐含地铸成int。
由于默认值是为构造函数所接受的参数所指定的,所以你不必向构造函数传递一个值。反正构造函数会被调用,但会使用默认参数。
这一行并不复杂,只是声明了一个Structure类型的变量。将相同类型的结构相互复制是非常容易的,就像 "复制 "一个内置类型变量的值一样。你需要从一个变量向另一个变量赋值。例如,"thingRaz = thingTwo;"。自己执行它,并打印出变量shtuRaz在这次赋值后的数值。
Funk1与typeOfgenericStructure的结构没有任何关系,只是它返回该类型的值。
你需要一般的训练,没有训练你会 "淹死"。我还没准备好给你建议。
我可以根据我所看到的情况(基本情况)简要地给你以下建议。
1.程序中的数据被存储在内存的指定区域,称为变量。
2. 变量的类型定义了对存储数据的解释方式,在绝大多数情况下,定义了其大小。解释的方式意味着可以对数据进行一系列的操作。
3.从这个角度来看,嵌入式类型和结构化类型在概念上并无不同。
第2点是最重要和最基本的理解。在C++和MQL中,类型的概念是非常重要的。
简而言之:类型是数据的一个 "模式",而变量是该模式的一个单元。一只猫或一只狗是一个 "模式",而具体的猫如Murzyk或狗如Sharik是猫和狗的单位。类型和变量的情况也是如此。
请你详细评论一下那个傻瓜 描述的方式,每一行包括语法?我还不明白这意味着什么。不一定在手指上,你也可以使用术语,但要逐行使用。
1)那么,Funk的函数是否像其他平庸的函数那样,返回一个对象而不是一些平庸的值?这是什么样的野兽,为什么它是一个物体?
2)我们能否用函数返回的对象或默认值进行初始化?也就是说,Funk函数虽然是同一结构的一部分,但与对象Thing 2没有任何关系,还是我理解错了?顺便说一下,它被称为对象,那么结构也有一个对象?我以为比这更简单。还有一个问题,如果一个结构的类型相同,我究竟如何将它们复制到另一个结构?这句简单的话。
并有一个臭名昭著的抄袭?而且没有必要单独声明Stuka 2的结构,它根本就不是一个结构,而是一个由结构创建的对象?
我对任何编程语言都不熟悉(但不反对学习),此外,对OOP的概念也比较模糊,所以如果问题很愚蠢,请不要惊讶。
哎呀,我刚才看到,大括号之前是封闭的,也就是说,这个Funka是在结构之外描述的,但它与结构的关系到底是什么呢?
塔尔图?嗯哼...
老伙计们,告诉我如何计算二维数组中的填充单元格数量。
请帮助我编写代码,以便在图表上只显示一个数字--损失水平,如果不是很难。
在这里,它在这个扩展好https://www.mql5.com/ru/code/8873,所以它被称为梅花的水平,它显示为红色,虽然也是保证金的水平是一个正常的话题,但至少那一个开始,否则,扩展是很酷,但有很多东西,我不需要,我不能理解它是如何获得有。
老伙计们,告诉我如何计算二维数组中的填充单元格数量。
ArrayRange
ArrayRange
该函数返回数组中的单元格数量,而不是填充单元格的数量。
谁能告诉我如何做一维?))