是否有更清洁的方式来表达以下内容?
// initialize several vars here
long lastT = 0;
while (looping) {
long now = currentTimeMillis();
long elapsed = now - lastT;
lastT = now;
// code here
}
据推测,我只需要long elapsed=...
(可能还有循环本身),但其他行可以压缩,也可以移动到别处。但是最好的方法是什么?
使用的语言并不重要,尽管上面是用Java编写的。
答案 0 :(得分:1)
你可以说
long lastT = 0;
while (looping) {
long elapsed = currentTimeMillis() - lastT;
lastT += elapsed;
// actual code goes here
}
以一个额外的算术运算为代价,为您节省一行和一个变量声明。请注意,在时间为浮点值的上下文中(例如,Python的time.time
返回double
)这样做最终会导致大量的聚合舍入错误。
如果你做了很多这样的事情并且让你感到困扰,那么你可以制作一个包含这些内容的经过时间计算的课程。然后你的循环可能是:
Stopwatch sw = new Stopwatch();
while (looping) {
long elapsed = sw.timeSinceLastReading();
// actual code goes here
}
对于它的价值,我通常使用与你给出的代码几乎相同的结构。