gpt4 book ai didi

swift - 在 swift 中对语句组使用 block

转载 作者:行者123 更新时间:2023-11-28 15:05:29 24 4
gpt4 key购买 nike

我在看博客,有一个功能如下。我想知道这样写的目的是什么?

  public func moveNinjaToBottomRight() {
ninja.center = {
let x = (frame.maxX - ninja.frame.width / 2)
let y = (frame.maxY - ninja.frame.height / 2)
return CGPoint(x: x, y: y)
}()
}

最佳答案

这只是风格问题。

这样写函数:

public func moveNinjaToBottomRight() {
ninja.center = {
let x = (frame.maxX - ninja.frame.width / 2)
let y = (frame.maxY - ninja.frame.height / 2)
return CGPoint(x: x, y: y)
}()
}

使函数的目的更加清晰。一目了然,您可以看到它只是更新了 ninja.center 并且您知道闭包内的代码正在计算新的中心。如果计算新中心需要更多行,则尤其如此。

另一种写法是:

public func moveNinjaToBottomRight() {
let x = (frame.maxX - ninja.frame.width / 2)
let y = (frame.maxY - ninja.frame.height / 2)
ninja.center = CGPoint(x: x, y: y)
}

在这种情况下,您必须通读所有行才能了解该函数的真正作用。同样,对于这么短的函数来说,这没什么区别,但如果它更长,读者就会花更长的时间来访问正在发生的事情。

如果闭包内的代码有特定用途,我建议只使用这种函数式风格。在本例中,它创建了一个 CGPoint。如果闭包中的代码导致了播放声音或更新用户界面等副作用,那么我相信第二个示例使用的命令式风格更有意义。

关于swift - 在 swift 中对语句组使用 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48541796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com