Artyom Trishkin: Это Алексей что-то переделывал в том коде, который я давал. А может и я недоглядел - писал "на коленке" в качестве простого примера для пояснения уже не помню чего.
//+------------------------------------------------------------------+//| CNewBar Time Возвращает время нулевого бара |
//+------------------------------------------------------------------+datetime CNewBar::Time(void)
{
datetime array[1], ret;
ret = CopyTime(this.m_symbol, this.m_timeframe, 0, 1, array) == 1 ? array[0] : 0;
return(array[0]);
}
//+------------------------------------------------------------------+//| CNewBar IsNewBar Основная функция класса |//+------------------------------------------------------------------+bool CNewBar::IsNewBar(void)
{
datetime tm = this.Time();
if(tm == 0)
returnfalse;
if(tm != this.m_time)
{
this.m_time = tm;
returntrue;
}
returnfalse;
}
是Alexey在我给的代码中重做了一些东西。或者我低估了它--我是 "跪着 "写的,作为一个简单的例子来澄清我已经不记得的东西。
也许阿列克谢可以告诉我们)。
循环的迭代不会结束,也不会开始新的循环,而是会进入下一个If。逻辑会改变。
Artyom Trishkin:
Это Алексей что-то переделывал в том коде, который я давал. А может и я недоглядел - писал "на коленке" в качестве простого примера для пояснения уже не помню чего.
Artem,为什么在这里使用this关键字? 没有它,方法将与类成员 一起工作。
阿列克谢,感谢你如此详细的回答。
在给定的代码片段中,ret变量的目的并不清楚...
如果方法返回数组[0],为什么还要计算呢?
P.S.
为什么在类方法 中使用这个?我们正在与这个特殊阶层的成员合作...
1.这里的CopyTime函数 是干什么用的?
2.也许Artem会回答这个问题--它是个人偏好还是有必要?
1.CopyTime函数 的作用是什么?
2.也许Artem会回答这个问题 - 这是个人喜好还是有必要?
不喜欢CopyTime(),用iTime()代替。这没有什么区别,主要是为了获得当前条的时间。
在我的脑子里,我依稀记得它是什么时候写的。我想我也问过这个问题......如果我没有弄错的话,这可以确保引用的只是本地方法,以防其他类中有类似的方法。当然,阿尔乔姆也会做出澄清。
不,那里的条件最初是这样设置的,如果指针创建成功,就把它添加到列表中。曲线括号是封闭的,如果出现故障,加法将不会被执行。继续运算符 的逻辑有点不同,但结果是一样的。
是的,结果是一样的,内部是不同的。我认为用延续的方式更快,虽然它的颜色和逻辑....。
Artem,为什么在这里使用这个关键字 呢? 因为即使没有它,方法也会与类成员 一起工作......
他们会。我使用它是因为我希望他们这样做 :)它明确指出了哪些类方法被使用。
如果你有两个类,一个是父类,一个是子类,你有两个名字相同的方法,但由于某种原因它们不是虚拟的,你必须明确指定使用哪一个。
假设父类是CParent,继承类是CInherited,它们都有Method()方法。
在这种情况下,如果我们调用一个CParent类的方法Method(),它将明确地调用CParent类的方法--这里不需要这样做。我们可以在有或没有它的情况下调用该方法。
如果我们在一个继承的CInherited类中调用 Method() 方法,该类的 方法也会被调用,因为我们首先寻找属于我们调用的类的方法。
如果我们在一个CInherited类中调用 CParent::Method(), 这样调用 的就是 父类的 方法 ,因为我们通过上下文解析操作符明确指定了属于父类的方法。
但是,我仍然会把方法称为 方法()在一个继承的CInherited 类中用this--以确保这个(this == "this")继承的类会被调用。
使用这个还有其他解释。也许对OOP更有经验的人可以告诉我们。
是的,结果是一样的,内部是不同的。我认为用延续的方式更快,虽然它的颜色和逻辑....。
不应该有任何区别。对我来说,它只是看起来更漂亮--少了括号和缩进。
嗯,是的,我是那些 "有些人 "之一,特别是,当我从类中调用标准函数时,我总是指定全局环境。只是因为我可以想到在这个类中写一个与标准函数同名的方法--这样我就不会忘记它的作用。这就是::对于调用标准函数的作用,而这对于调用我的同名方法的作用。