有没有更好的方法来做到这一点?

时间:2015-06-09 19:30:00

标签: ios swift coding-style

这是一段非常简单的代码,但我觉得有更优雅的方法可以做到这一点:

    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?

2 个答案:

答案 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