这是一段非常简单的代码,但我觉得有更优雅的方法可以做到这一点:
if timeOfLastUpdate == nil {
timeOfLastUpdate = currentTime
return
}
//"Infinitesimal" moment of time used to update the position of the orbiter
let dt:CFTimeInterval = currentTime - timeOfLastUpdate!
timeOfLastUpdate = currentTime
//Other code
我觉得应该有更优雅的方式来使用可选链接来执行以下操作。我不喜欢
这个事实a)我检查该值是否等于nil而不是使用某种可选链接
b)行timeOfLastUpdate = currentTime
重复两次。
有更好的方法吗?什么更符合Swift?
答案 0 :(得分:0)
这个怎么样:
if timeOfLastUpdate = timeOfLastUpdate
{
dt = currentTime - timeOfLastUpdate
}
timeOfLastUpdate = currentTime
如果您需要返回代码而不运行"其他代码"在" timeOfLastUpdate为零的情况下,您可能需要让timeOfLastUpdate = currentTime
作业出现两次:
if timeOfLastUpdate = timeOfLastUpdate
{
dt = currentTime - timeOfLastUpdate
timeOfLastUpdate = currentTime
return
}
else
{
timeOfLastUpdate = currentTime
}
//other code here.
答案 1 :(得分:0)
这个怎么样?
if let _timeOfLastUpdate = timeOfLastUpdate, let dt = currentTime - _timeOfLastUpdate {
//other codes
}
//if this line of code can be placed after "//other codes", cause I see it must be placed before //other codes
timeOfLastUpdate = currentTime